From 575596137b326da0fb261d4c19abe44c172b0cb7 Mon Sep 17 00:00:00 2001 From: TizenOpenSource Date: Mon, 9 Jan 2023 12:00:19 +0900 Subject: [PATCH] Imported Upstream version 4.4 --- AUTHORS | 62 +- Basic.mk | 21 +- COPYING | 8 +- ChangeLog | 3209 ++++++ INSTALL | 368 + Makefile.am | 73 +- Makefile.in | 656 +- NEWS | 215 +- README | 113 +- README.Amiga | 14 +- README.DOS | 6 +- README.OS2 | 26 +- README.VMS | 90 +- README.W32 | 74 +- README.customs | 22 +- aclocal.m4 | 157 +- build-aux/compile | 6 +- build-aux/config.guess | 1203 +-- build-aux/config.sub | 655 +- build-aux/depcomp | 3 +- build-aux/install-sh | 148 +- build-aux/mdate-sh | 2 +- build-aux/missing | 2 +- build-aux/texinfo.tex | 868 +- build.cfg.in | 4 +- build.sh | 61 +- build_w32.bat | 134 +- builddos.bat | 24 +- configure | 16256 ++++++++++++------------------- configure.ac | 120 +- doc/Makefile.am | 4 +- doc/Makefile.in | 534 +- doc/fdl.texi | 2 +- doc/make-stds.texi | 6 +- doc/make.1 | 77 +- doc/make.info | 364 +- doc/make.info-1 | 1317 +-- doc/make.info-2 | 1577 +-- doc/make.info-3 | Bin 0 -> 19645 bytes doc/make.texi | 1791 ++-- doc/stamp-vti | 8 +- doc/version.texi | 8 +- lib/Makefile.am | 1003 +- lib/Makefile.in | 1513 +-- lib/_Noreturn.h | 40 - lib/access.c | 31 - lib/alloca.c | 325 +- lib/alloca.in.h | 39 +- lib/arg-nonnull.h | 26 - lib/basename-lgpl.c | 75 - lib/c++defs.h | 316 - lib/close.c | 71 - lib/concat-filename.c | 16 +- lib/concat-filename.h | 25 +- lib/dirname-lgpl.c | 86 - lib/dirname.h | 54 - lib/dosname.h | 52 - lib/dup2.c | 235 - lib/errno.in.h | 279 - lib/error.c | 411 - lib/error.h | 75 - lib/exitfail.c | 24 - lib/exitfail.h | 18 - lib/fcntl.c | 627 -- lib/fcntl.in.h | 392 - lib/fd-hook.c | 116 - lib/fd-hook.h | 119 - lib/filename.h | 110 +- lib/findprog-in.c | 234 +- lib/findprog.h | 22 +- lib/getdtablesize.c | 124 - lib/getloadavg.c | 49 +- lib/getprogname.c | 260 - lib/getprogname.h | 40 - lib/gettext.h | 301 - lib/intprops.h | 106 +- lib/limits.in.h | 104 - lib/malloc.c | 56 - lib/msvc-inval.c | 129 - lib/msvc-inval.h | 222 - lib/msvc-nothrow.c | 51 - lib/msvc-nothrow.h | 43 - lib/stdbool.in.h | 37 +- lib/stddef.in.h | 121 - lib/stdint.in.h | 746 -- lib/stdio.in.h | 1444 --- lib/stdlib.in.h | 1112 --- lib/stpcpy.c | 49 - lib/strerror-override.c | 302 - lib/strerror-override.h | 56 - lib/strerror.c | 71 - lib/string.in.h | 1067 -- lib/stripslash.c | 45 - lib/sys_types.in.h | 106 - lib/unistd.c | 4 - lib/unistd.in.h | 1719 ---- lib/verify.h | 301 - lib/warn-on-use.h | 58 +- lib/xalloc-die.c | 41 - lib/xalloc-oversized.h | 60 - lib/xalloc.h | 262 - lib/xconcat-filename.c | 41 - lib/xmalloc.c | 122 - m4/00gnulib.m4 | 107 +- m4/absolute-header.m4 | 102 - m4/access.m4 | 16 - m4/acinclude.m4 | 4 +- m4/alloca.m4 | 46 +- m4/asm-underscore.m4 | 19 +- m4/close.m4 | 35 - m4/dirname.m4 | 19 - m4/dospaths.m4 | 4 +- m4/double-slash-root.m4 | 38 - m4/dup2.m4 | 117 - m4/eaccess.m4 | 2 +- m4/errno_h.m4 | 133 - m4/error.m4 | 27 - m4/extensions.m4 | 174 +- m4/extern-inline.m4 | 114 - m4/fcntl-o.m4 | 139 - m4/fcntl.m4 | 126 - m4/fcntl_h.m4 | 52 - m4/findprog-in.m4 | 2 +- m4/getdtablesize.m4 | 60 - m4/getloadavg.m4 | 65 +- m4/getprogname.m4 | 43 - m4/gnulib-cache.m4 | 10 +- m4/gnulib-common.m4 | 767 +- m4/gnulib-comp.m4 | 282 +- m4/host-cpu-c-abi.m4 | 11 +- m4/include_next.m4 | 224 - m4/largefile.m4 | 180 + m4/limits-h.m4 | 43 - m4/malloc.m4 | 104 - m4/msvc-inval.m4 | 19 - m4/msvc-nothrow.m4 | 10 - m4/multiarch.m4 | 62 - m4/off_t.m4 | 18 - m4/sig_atomic_t.m4 | 14 + m4/ssize_t.m4 | 23 - m4/stdbool.m4 | 124 +- m4/stddef_h.m4 | 72 - m4/stdint.m4 | 535 - m4/stdio_h.m4 | 225 - m4/stdlib_h.m4 | 136 - m4/stpcpy.m4 | 25 - m4/strerror.m4 | 102 - m4/string_h.m4 | 122 - m4/sys_socket_h.m4 | 188 - m4/sys_types_h.m4 | 60 - m4/unistd_h.m4 | 201 - m4/warn-on-use.m4 | 35 +- m4/wchar_t.m4 | 24 - m4/wint_t.m4 | 74 - m4/xalloc.m4 | 7 - m4/year2038.m4 | 124 + m4/zzgnulib.m4 | 23 + makefile.com | 6 +- mk/Amiga.mk | 4 +- mk/VMS.mk | 6 +- mk/Windows32.mk | 4 +- mk/msdosdjgpp.mk | 4 +- po/LINGUAS | 1 + po/POTFILES.in | 5 +- po/be.gmo | Bin 6580 -> 6136 bytes po/be.po | 1118 ++- po/bg.gmo | Bin 59330 -> 65584 bytes po/bg.po | 1204 ++- po/cs.gmo | Bin 45689 -> 50567 bytes po/cs.po | 1228 ++- po/da.gmo | Bin 41220 -> 46951 bytes po/da.po | 1296 ++- po/de.gmo | Bin 45198 -> 52220 bytes po/de.po | 1832 ++-- po/es.gmo | Bin 45980 -> 41411 bytes po/es.po | 1258 ++- po/fi.gmo | Bin 31939 -> 30675 bytes po/fi.po | 1253 ++- po/fr.gmo | Bin 44911 -> 41807 bytes po/fr.po | 1279 ++- po/ga.gmo | Bin 43490 -> 38938 bytes po/ga.po | 1193 ++- po/gl.gmo | Bin 21543 -> 20076 bytes po/gl.po | 1152 ++- po/he.gmo | Bin 10151 -> 9710 bytes po/he.po | 1125 ++- po/hr.gmo | Bin 46070 -> 50639 bytes po/hr.po | 1505 +-- po/id.gmo | Bin 40284 -> 39490 bytes po/id.po | 1321 +-- po/it.gmo | Bin 45544 -> 41012 bytes po/it.po | 1196 ++- po/ja.gmo | Bin 48996 -> 54247 bytes po/ja.po | 1251 ++- po/ko.gmo | Bin 46973 -> 51905 bytes po/ko.po | 1186 ++- po/lt.gmo | Bin 7037 -> 6827 bytes po/lt.po | 1116 ++- po/make.pot | 1082 +- po/nl.gmo | Bin 44391 -> 48958 bytes po/nl.po | 1236 ++- po/pl.gmo | Bin 44530 -> 49133 bytes po/pl.po | 1187 ++- po/pt.gmo | Bin 43530 -> 39137 bytes po/pt.po | 1192 ++- po/pt_BR.gmo | Bin 44043 -> 39569 bytes po/pt_BR.po | 1217 ++- po/ro.gmo | Bin 0 -> 52157 bytes po/ro.po | 2640 +++++ po/ru.gmo | Bin 56673 -> 51042 bytes po/ru.po | 1193 ++- po/sr.gmo | Bin 53185 -> 59190 bytes po/sr.po | 1263 ++- po/sv.gmo | Bin 43480 -> 48252 bytes po/sv.po | 1200 ++- po/tr.gmo | Bin 18996 -> 17599 bytes po/tr.po | 1158 ++- po/uk.gmo | Bin 56014 -> 61658 bytes po/uk.po | 1229 ++- po/vi.gmo | Bin 47388 -> 42515 bytes po/vi.po | 1199 ++- po/zh_CN.gmo | Bin 42126 -> 37823 bytes po/zh_CN.po | 1191 ++- po/zh_TW.gmo | Bin 42268 -> 45174 bytes po/zh_TW.po | 1224 ++- src/amiga.c | 16 +- src/amiga.h | 4 +- src/ar.c | 24 +- src/arscan.c | 124 +- src/commands.c | 141 +- src/commands.h | 11 +- src/config.ami | 40 +- src/config.h-vms | 43 +- src/config.h.W32 | 239 +- src/config.h.in | 886 +- src/configh.dos | 59 +- src/debug.h | 6 +- src/default.c | 17 +- src/dep.h | 40 +- src/dir.c | 317 +- src/expand.c | 42 +- src/file.c | 282 +- src/filedef.h | 15 +- src/function.c | 597 +- src/getopt.c | 4 +- src/getopt.h | 4 +- src/getopt1.c | 4 +- src/gettext.h | 4 +- src/gmk-default.scm | 4 +- src/gnumake.h | 4 +- src/guile.c | 4 +- src/hash.c | 8 +- src/hash.h | 10 +- src/implicit.c | 344 +- src/job.c | 330 +- src/job.h | 13 +- src/load.c | 91 +- src/loadapi.c | 4 +- src/main.c | 1348 ++- src/makeint.h | 159 +- src/misc.c | 689 +- src/mkconfig.h | 37 + src/os.h | 123 +- src/output.c | 288 +- src/output.h | 58 +- src/posixos.c | 459 +- src/read.c | 597 +- src/remake.c | 315 +- src/remote-cstms.c | 23 +- src/remote-stub.c | 4 +- src/rule.c | 90 +- src/rule.h | 6 +- src/shuffle.c | 237 + src/shuffle.h | 26 + src/signame.c | 4 +- src/strcache.c | 4 +- src/variable.c | 545 +- src/variable.h | 26 +- src/version.c | 6 +- src/vms_exit.c | 6 +- src/vms_export_symbol.c | 8 +- src/vms_progname.c | 8 +- src/vmsdir.h | 4 +- src/vmsfunctions.c | 6 +- src/vmsify.c | 4 +- src/vmsjobs.c | 33 +- src/vpath.c | 15 +- src/w32/compat/dirent.c | 7 +- src/w32/compat/posixfcn.c | 343 +- src/w32/include/dirent.h | 4 +- src/w32/include/dlfcn.h | 4 +- src/w32/include/pathstuff.h | 4 +- src/w32/include/sub_proc.h | 4 +- src/w32/include/w32err.h | 4 +- src/w32/pathstuff.c | 18 +- src/w32/subproc/misc.c | 4 +- src/w32/subproc/proc.h | 4 +- src/w32/subproc/sub_proc.c | 10 +- src/w32/subproc/w32err.c | 4 +- src/w32/w32os.c | 302 +- tests/README | 56 +- tests/config_flags_pm.com | 4 +- tests/mkshadow | 4 +- tests/run_make_tests.bat | 4 +- tests/run_make_tests.pl | 181 +- tests/scripts/features/archives | 7 +- tests/scripts/features/default_names | 2 +- tests/scripts/features/dircache | 31 + tests/scripts/features/double_colon | 150 +- tests/scripts/features/errors | 29 +- tests/scripts/features/exec | 29 +- tests/scripts/features/export | 42 +- tests/scripts/features/grouped_targets | 74 + tests/scripts/features/implicit_search | 483 + tests/scripts/features/include | 270 +- tests/scripts/features/jobserver | 97 +- tests/scripts/features/load | 54 +- tests/scripts/features/loadapi | 103 +- tests/scripts/features/mult_rules | 22 +- tests/scripts/features/output-sync | 33 +- tests/scripts/features/parallelism | 95 +- tests/scripts/features/patternrules | 550 +- tests/scripts/features/reinvoke | 118 +- tests/scripts/features/se_explicit | 305 +- tests/scripts/features/se_implicit | 240 + tests/scripts/features/se_statpat | 133 +- tests/scripts/features/statipattrules | 208 +- tests/scripts/features/targetvars | 155 +- tests/scripts/features/temp_stdin | 118 + tests/scripts/features/varnesting | 12 +- tests/scripts/features/vpath | 139 +- tests/scripts/features/vpath2 | 45 - tests/scripts/features/vpath3 | 41 - tests/scripts/features/vpathgpath | 4 +- tests/scripts/features/vpathplus | 97 +- tests/scripts/functions/eval | 2 +- tests/scripts/functions/file | 71 + tests/scripts/functions/filter-out | 16 + tests/scripts/functions/foreach | 4 +- tests/scripts/functions/intcmp | 72 + tests/scripts/functions/let | 111 + tests/scripts/functions/origin | 28 +- tests/scripts/functions/shell | 146 +- tests/scripts/functions/word | 102 +- tests/scripts/misc/bs-nl | 2 - tests/scripts/misc/close_stdout | 2 +- tests/scripts/misc/fopen-fail | 4 + tests/scripts/misc/general4 | 31 +- tests/scripts/options/dash-I | 123 +- tests/scripts/options/dash-d | 9 + tests/scripts/options/dash-e | 17 +- tests/scripts/options/dash-f | 97 +- tests/scripts/options/dash-k | 5 +- tests/scripts/options/dash-l | 7 +- tests/scripts/options/dash-r | 44 + tests/scripts/options/print-directory | 51 +- tests/scripts/options/shuffle | 128 + tests/scripts/options/symlinks | 9 +- tests/scripts/targets/INTERMEDIATE | 84 +- tests/scripts/targets/NOTINTERMEDIATE | 119 + tests/scripts/targets/ONESHELL | 51 +- tests/scripts/targets/POSIX | 4 +- tests/scripts/targets/WAIT | 193 + tests/scripts/variables/GNUMAKEFLAGS | 22 +- tests/scripts/variables/INCLUDE_DIRS | 70 +- tests/scripts/variables/MAKEFLAGS | 143 +- tests/scripts/variables/MAKE_RESTARTS | 12 +- tests/scripts/variables/SHELL | 20 +- tests/scripts/variables/automatic | 26 +- tests/scripts/variables/define | 29 +- tests/scripts/variables/flavors | 44 + tests/scripts/variables/negative | 14 + tests/scripts/variables/undefine | 18 + tests/test_driver.pl | 273 +- tests/thelp.pl | 9 +- 375 files changed, 53285 insertions(+), 53346 deletions(-) create mode 100644 INSTALL mode change 100755 => 100644 build_w32.bat create mode 100644 doc/make.info-3 delete mode 100644 lib/_Noreturn.h delete mode 100644 lib/access.c delete mode 100644 lib/arg-nonnull.h delete mode 100644 lib/basename-lgpl.c delete mode 100644 lib/c++defs.h delete mode 100644 lib/close.c delete mode 100644 lib/dirname-lgpl.c delete mode 100644 lib/dirname.h delete mode 100644 lib/dosname.h delete mode 100644 lib/dup2.c delete mode 100644 lib/errno.in.h delete mode 100644 lib/error.c delete mode 100644 lib/error.h delete mode 100644 lib/exitfail.c delete mode 100644 lib/exitfail.h delete mode 100644 lib/fcntl.c delete mode 100644 lib/fcntl.in.h delete mode 100644 lib/fd-hook.c delete mode 100644 lib/fd-hook.h delete mode 100644 lib/getdtablesize.c delete mode 100644 lib/getprogname.c delete mode 100644 lib/getprogname.h delete mode 100644 lib/gettext.h delete mode 100644 lib/limits.in.h delete mode 100644 lib/malloc.c delete mode 100644 lib/msvc-inval.c delete mode 100644 lib/msvc-inval.h delete mode 100644 lib/msvc-nothrow.c delete mode 100644 lib/msvc-nothrow.h delete mode 100644 lib/stddef.in.h delete mode 100644 lib/stdint.in.h delete mode 100644 lib/stdio.in.h delete mode 100644 lib/stdlib.in.h delete mode 100644 lib/stpcpy.c delete mode 100644 lib/strerror-override.c delete mode 100644 lib/strerror-override.h delete mode 100644 lib/strerror.c delete mode 100644 lib/string.in.h delete mode 100644 lib/stripslash.c delete mode 100644 lib/sys_types.in.h delete mode 100644 lib/unistd.c delete mode 100644 lib/unistd.in.h delete mode 100644 lib/verify.h delete mode 100644 lib/xalloc-die.c delete mode 100644 lib/xalloc-oversized.h delete mode 100644 lib/xalloc.h delete mode 100644 lib/xconcat-filename.c delete mode 100644 lib/xmalloc.c delete mode 100644 m4/absolute-header.m4 delete mode 100644 m4/access.m4 delete mode 100644 m4/close.m4 delete mode 100644 m4/dirname.m4 delete mode 100644 m4/double-slash-root.m4 delete mode 100644 m4/dup2.m4 delete mode 100644 m4/errno_h.m4 delete mode 100644 m4/error.m4 delete mode 100644 m4/extern-inline.m4 delete mode 100644 m4/fcntl-o.m4 delete mode 100644 m4/fcntl.m4 delete mode 100644 m4/fcntl_h.m4 delete mode 100644 m4/getdtablesize.m4 delete mode 100644 m4/getprogname.m4 delete mode 100644 m4/include_next.m4 create mode 100644 m4/largefile.m4 delete mode 100644 m4/limits-h.m4 delete mode 100644 m4/malloc.m4 delete mode 100644 m4/msvc-inval.m4 delete mode 100644 m4/msvc-nothrow.m4 delete mode 100644 m4/multiarch.m4 delete mode 100644 m4/off_t.m4 create mode 100644 m4/sig_atomic_t.m4 delete mode 100644 m4/ssize_t.m4 delete mode 100644 m4/stddef_h.m4 delete mode 100644 m4/stdint.m4 delete mode 100644 m4/stdio_h.m4 delete mode 100644 m4/stdlib_h.m4 delete mode 100644 m4/stpcpy.m4 delete mode 100644 m4/strerror.m4 delete mode 100644 m4/string_h.m4 delete mode 100644 m4/sys_socket_h.m4 delete mode 100644 m4/sys_types_h.m4 delete mode 100644 m4/unistd_h.m4 delete mode 100644 m4/wchar_t.m4 delete mode 100644 m4/wint_t.m4 delete mode 100644 m4/xalloc.m4 create mode 100644 m4/year2038.m4 create mode 100644 m4/zzgnulib.m4 create mode 100644 po/ro.gmo create mode 100644 po/ro.po create mode 100644 src/mkconfig.h create mode 100644 src/shuffle.c create mode 100644 src/shuffle.h create mode 100644 tests/scripts/features/dircache create mode 100644 tests/scripts/features/implicit_search create mode 100644 tests/scripts/features/temp_stdin delete mode 100644 tests/scripts/features/vpath2 delete mode 100644 tests/scripts/features/vpath3 create mode 100644 tests/scripts/functions/intcmp create mode 100644 tests/scripts/functions/let create mode 100644 tests/scripts/options/dash-d create mode 100644 tests/scripts/options/dash-r create mode 100644 tests/scripts/options/shuffle create mode 100644 tests/scripts/targets/NOTINTERMEDIATE create mode 100644 tests/scripts/targets/WAIT diff --git a/AUTHORS b/AUTHORS index dc9127e..d4e37db 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,67 @@ GNU make porting efforts: Andreas Beuning Earnie Boyd Troy Runkel + Juan M. Guerrero ----------------------------------- 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 + 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-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 @@ -87,4 +119,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..683f377 100644 --- a/Basic.mk +++ b/Basic.mk @@ -10,7 +10,7 @@ # # make.exe -f Basic.mk # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-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 @@ -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,6 +135,8 @@ $(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h # --------------- DEPENDENCIES # +$(OBJECTS): $(SRCDIR)/src/mkconfig.h + # src/.deps/amiga.Po # dummy @@ -215,6 +215,9 @@ $(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h # src/.deps/rule.Po # dummy +# src/.deps/shuffle.Po +# dummy + # src/.deps/signame.Po # dummy 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..59f71f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3212 @@ +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 8cc39c9..53ec73c 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-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 @@ -14,7 +14,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 . AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc ACLOCAL_AMFLAGS = -I m4 @@ -35,8 +35,9 @@ make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ 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/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.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,24 @@ 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 $(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 +187,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 index 9535058..c6b0ff9 100644 --- a/Makefile.in +++ b/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, @@ -16,7 +16,7 @@ # This is a -*-Makefile-*-, or close enough # -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-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 @@ -30,7 +30,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 . VPATH = @srcdir@ @@ -108,45 +108,32 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = make$(EXEEXT) -@WINDOWSENV_TRUE@am__append_1 = $(w32_SRCS) -@WINDOWSENV_TRUE@am__append_2 = -I $(top_srcdir)/src/w32/include -@WINDOWSENV_FALSE@am__append_3 = src/posixos.c -@USE_CUSTOMS_TRUE@am__append_4 = src/remote-cstms.c -@USE_CUSTOMS_FALSE@am__append_5 = src/remote-stub.c + +# 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/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/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/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -157,7 +144,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = build.cfg tests/config-flags.pm -CONFIG_CLEAN_VPATH_FILES = +CONFIG_CLEAN_VPATH_FILES = build.sh am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(includedir)" PROGRAMS = $(bin_PROGRAMS) @@ -168,9 +155,9 @@ am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \ 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/w32/pathstuff.c src/w32/w32os.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 \ @@ -186,9 +173,10 @@ am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(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/signame.$(OBJEXT) \ - src/strcache.$(OBJEXT) src/variable.$(OBJEXT) \ - src/version.$(OBJEXT) src/vpath.$(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) \ @@ -203,7 +191,8 @@ 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 = -make_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_1) lib/libgnu.a \ +@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@) @@ -233,9 +222,10 @@ am__depfiles_remade = src/$(DEPDIR)/amiga.Po src/$(DEPDIR)/ar.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)/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)/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 \ @@ -328,12 +318,9 @@ 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 -CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \ - $(top_srcdir)/build-aux/compile \ + $(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 \ @@ -382,6 +369,8 @@ am__relativize = \ 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$$' @@ -392,23 +381,19 @@ 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@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -416,349 +401,23 @@ 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@ @@ -773,7 +432,6 @@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIMITS_H = @LIMITS_H@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ @@ -783,26 +441,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@ @@ -817,136 +455,16 @@ 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@ @@ -972,8 +490,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@ @@ -1018,8 +538,9 @@ make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ 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/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 \ @@ -1035,16 +556,20 @@ 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_1) $(am__append_3) \ - $(am__append_4) $(am__append_5) +make_SOURCES = $(make_SRCS) $(am__append_2) $(am__append_4) \ + $(am__append_5) $(am__append_6) EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) -make_LDADD = $(LIBOBJS) $(GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ +@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)\" -DINCLUDEDIR=\"$(includedir)\" \ - -DLOCALEDIR=\"$(localedir)\" $(am__append_2) -AM_CFLAGS = $(GUILE_CFLAGS) + -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 @@ -1058,8 +583,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.Amiga SCOPTIONS src/config.ami \ README.DOS builddos.bat src/configh.dos \ README.W32 build_w32.bat src/config.h.W32 \ @@ -1076,6 +601,18 @@ EXTRA_DIST = ChangeLog README build.sh build.cfg.in $(man_MANS) \ # 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 $(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: @@ -1229,6 +766,8 @@ 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) \ @@ -1328,6 +867,7 @@ distclean-compile: @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 @@ -1537,7 +1077,6 @@ cscopelist-am: $(am__tagged_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 @@ -1623,6 +1162,10 @@ 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 @@ -1665,6 +1208,8 @@ distcheck: dist 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) @@ -1680,7 +1225,7 @@ distcheck: dist $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ @@ -1760,6 +1305,7 @@ install-strip: "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: @@ -1810,6 +1356,7 @@ distclean: distclean-recursive -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 @@ -1900,6 +1447,7 @@ maintainer-clean: maintainer-clean-recursive -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 @@ -1944,7 +1492,7 @@ uninstall-man: uninstall-man1 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 distcheck distclean distclean-compile \ + 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 \ @@ -1978,13 +1526,13 @@ 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"; \ @@ -1995,6 +1543,7 @@ check-local: check-regression .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 \ @@ -2002,17 +1551,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 # --------------- Maintainer's Section diff --git a/NEWS b/NEWS index e884df1..c370b0a 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,206 @@ -GNU make NEWS -*-indented-text-*- +GNU Make NEWS -*-indented-text-*- History of user-visible changes. - 19 January 2020 + 31 October 2022 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 (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) A complete list of bugs fixed in this version is available here: @@ -35,6 +227,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 @@ -256,7 +455,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New feature: "::=" simple assignment operator as defined by POSIX in 2012. 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 @@ -929,7 +1128,7 @@ Version 3.77 (28 Jul 1998) This port was done by Klaus Kämpf * 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 @@ -1619,7 +1818,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-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 @@ -1632,4 +1831,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..43075d3 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 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. + + +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 -If you need help using GNU make, try these forums: + * Send the patch via email to : be sure to add it as an + attachment to avoid interference by email processors. - help-make@gnu.org - help-utils@gnu.org - news:gnu.utils.help - news:gnu.utils.bug +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,7 +177,7 @@ 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. @@ -157,22 +190,22 @@ Ports 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-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 @@ -185,4 +218,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..94fcc13 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-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 @@ -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..95c3388 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-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 @@ -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..82f496e 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) @@ -105,15 +105,15 @@ Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS. 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 +138,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 +160,7 @@ from the make source tree. ------------------------------------------------------------------------------- -Copyright (C) 2003-2020 Free Software Foundation, Inc. +Copyright (C) 2003-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 @@ -173,4 +173,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..7802b73 100644 --- a/README.W32 +++ b/README.W32 @@ -1,4 +1,4 @@ -This version of GNU make has been tested on: +This version of GNU Make has been tested on: Microsoft Windows 2000/XP/2003/Vista/7/8/10 It has also been used on Windows 95/98/NT, and on OS/2. @@ -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-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 @@ -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..c6cf979 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-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 @@ -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/aclocal.m4 b/aclocal.m4 index 3296947..b683b83 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# 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, @@ -14,8 +14,8 @@ 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.69],, -[m4_warning([this file was generated for autoconf 2.69. +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'.])]) @@ -296,7 +296,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# 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, @@ -311,7 +311,7 @@ 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.1], [], +m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -327,14 +327,14 @@ m4_define([_AM_AUTOCONF_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.1])dnl +[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-2018 Free Software Foundation, Inc. +# 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, @@ -384,9 +384,46 @@ AC_DEFUN([AM_AUX_DIR_EXPAND], 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-2018 Free Software Foundation, Inc. +# 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, @@ -417,7 +454,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# 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, @@ -608,7 +645,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# 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, @@ -647,7 +684,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + 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 @@ -673,7 +712,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# 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, @@ -697,7 +736,7 @@ fi], [AC_MSG_RESULT([no])]) # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# 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, @@ -725,6 +764,10 @@ m4_defn([AC_PROG_CC]) # 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 @@ -761,7 +804,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + 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 @@ -813,6 +856,20 @@ AC_PROVIDE_IFELSE([AC_PROG_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 @@ -894,7 +951,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# 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, @@ -915,7 +972,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# 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, @@ -936,7 +993,7 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# 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, @@ -979,7 +1036,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# 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, @@ -1000,12 +1057,7 @@ 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 - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then @@ -1018,7 +1070,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# 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, @@ -1047,7 +1099,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# 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, @@ -1094,7 +1146,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# 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, @@ -1113,7 +1165,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# 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, @@ -1194,7 +1246,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# 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, @@ -1254,7 +1306,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# 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, @@ -1282,7 +1334,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# 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, @@ -1301,7 +1353,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# 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, @@ -1433,61 +1485,30 @@ AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/00gnulib.m4]) -m4_include([m4/absolute-header.m4]) -m4_include([m4/access.m4]) m4_include([m4/acinclude.m4]) m4_include([m4/alloca.m4]) m4_include([m4/asm-underscore.m4]) -m4_include([m4/close.m4]) -m4_include([m4/dirname.m4]) m4_include([m4/dospaths.m4]) -m4_include([m4/double-slash-root.m4]) -m4_include([m4/dup2.m4]) m4_include([m4/eaccess.m4]) -m4_include([m4/errno_h.m4]) -m4_include([m4/error.m4]) m4_include([m4/extensions.m4]) -m4_include([m4/extern-inline.m4]) -m4_include([m4/fcntl-o.m4]) -m4_include([m4/fcntl.m4]) -m4_include([m4/fcntl_h.m4]) m4_include([m4/findprog-in.m4]) -m4_include([m4/getdtablesize.m4]) m4_include([m4/getloadavg.m4]) -m4_include([m4/getprogname.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/include_next.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/limits-h.m4]) m4_include([m4/longlong.m4]) -m4_include([m4/malloc.m4]) -m4_include([m4/msvc-inval.m4]) -m4_include([m4/msvc-nothrow.m4]) -m4_include([m4/multiarch.m4]) m4_include([m4/nls.m4]) -m4_include([m4/off_t.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) -m4_include([m4/ssize_t.m4]) +m4_include([m4/sig_atomic_t.m4]) m4_include([m4/stdbool.m4]) -m4_include([m4/stddef_h.m4]) -m4_include([m4/stdint.m4]) -m4_include([m4/stdio_h.m4]) -m4_include([m4/stdlib_h.m4]) -m4_include([m4/stpcpy.m4]) -m4_include([m4/strerror.m4]) -m4_include([m4/string_h.m4]) -m4_include([m4/sys_socket_h.m4]) -m4_include([m4/sys_types_h.m4]) -m4_include([m4/unistd_h.m4]) m4_include([m4/warn-on-use.m4]) -m4_include([m4/wchar_t.m4]) -m4_include([m4/wint_t.m4]) -m4_include([m4/xalloc.m4]) +m4_include([m4/year2038.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..1817bdc 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-2022 Free Software Foundation, Inc. -timestamp='2019-12-21' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-05-25' # 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-2022 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,127 @@ 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 + ;; *: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 +988,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:*:* | loongarchx32: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 +1089,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 +1225,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 +1240,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 +1252,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 +1301,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 +1428,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 +1449,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 +1701,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 +1527,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 +1539,8 @@ case $cpu-$vendor in os=riscix1.2 ;; arm*-rebel) - os=linux + kernel=linux + os=gnu ;; arm*-semi) os=aout @@ -1705,84 +1706,180 @@ 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* ) + ;; + # 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) + ;; + *) + 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* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # 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 + ;; + 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..75323b7 100755 --- a/build-aux/depcomp +++ b/build-aux/depcomp @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2019 Free Software Foundation, Inc. +# Copyright (C) 1999-2022 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 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..8d8bb37 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-2022 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..8872e5e 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-04-09.08} % -% 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. % @@ -349,36 +349,21 @@ \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + \checkchapterpage + % % 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 - % - \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}% + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \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 +408,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 +572,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 @@ -1002,6 +1002,14 @@ where each line of input produces a line of output.} \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 +1018,7 @@ where each line of input produces a line of output.} \let\setfilename=\comment % @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} +\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} \message{pdf,} @@ -1137,6 +1145,45 @@ where each line of input produces a line of output.} \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 +1474,13 @@ output) for that.)} % 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}}% @@ -1669,9 +1722,13 @@ output) for that.)} % 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 +1740,8 @@ output) for that.)} \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% @@ -1812,19 +1870,23 @@ output) for that.)} \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 @@ -2496,7 +2558,7 @@ end \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} -\def\tt{\fam=\ttfam \setfontstyle{tt}} +\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. @@ -2622,8 +2684,6 @@ end \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 @@ -2631,68 +2691,14 @@ end % \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 - -\def\defmarkupstylesetup#1{% - \expandafter\def\expandafter\markupstylesetup - \expandafter{\markupstylesetup #1}% - \def#1% -} - -% 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 -} - { \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 @@ -2855,7 +2861,7 @@ end } % @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 @@ -2898,8 +2904,7 @@ end \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 @@ -2987,10 +2992,18 @@ end % 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 +3058,7 @@ end \urefcatcodes % \global\def\urefcode{\begingroup - \setupmarkupstyle{code}% + \setcodequotes \urefcatcodes \let&\urefcodeamp \let.\urefcodedot @@ -3101,15 +3114,15 @@ end % 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 +3171,8 @@ end % 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 +3185,9 @@ end % \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 \nohyphenation \tt #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} @@ -3305,6 +3305,29 @@ end \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. @@ -3509,7 +3532,7 @@ end % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % -\def\pounds{{\it\$}} +\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} % @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 +3601,9 @@ end \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 @@ -3658,11 +3684,19 @@ end \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{% + \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi +} + +\def\quotedblright{% + \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi +} + \message{page headings,} @@ -3784,12 +3818,19 @@ end \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}} +\headline={{\textfonts\rm + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax @@ -3805,12 +3846,14 @@ end \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,37 +3920,34 @@ end \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} @@ -3917,7 +3957,9 @@ end \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}} +\global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3925,8 +3967,22 @@ end \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 +4291,8 @@ end \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,8 +4340,6 @@ end \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 @@ -4376,14 +4356,8 @@ end % 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 +4372,8 @@ end % \tolerance=9500 \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent + \parskip=0pt + \parindent=6pt \overfullrule=0pt \global\colcount=0 % @@ -4430,47 +4403,24 @@ end % 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,31 +4429,6 @@ end \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,} @@ -4841,7 +4766,7 @@ end % 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 @@ -5138,43 +5063,44 @@ end \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 +5115,10 @@ end \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 +5137,20 @@ end \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 +5217,9 @@ end % trim spaces. \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi % \xdef\bracedtext{\bracedtext{\trimmed}}% % @@ -5339,7 +5285,12 @@ end % 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 @@ -5559,7 +5510,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 @@ -5998,7 +5953,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % Chapters, sections, etc. % Let's start with @part. -\outer\parseargdef\part{\partzzz{#1}} +\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null @@ -6401,18 +6356,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 @@ -6777,9 +6730,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \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,6 +6745,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% % % 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 } % redefined for the two-volume lispref. We always output on @@ -6816,8 +6770,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi \closein 1 \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno + \contentsendroman } % And just the chapters. @@ -6852,10 +6805,20 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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. @@ -6997,7 +6960,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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 @@ -7223,7 +7186,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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 +7232,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \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. % @@ -7429,7 +7392,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% - \setupmarkupstyle{verb}% + \setcodequotes \tabeightspaces % Respect line breaks, % print special symbols as themselves, and @@ -7444,13 +7407,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +7420,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +7431,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +7473,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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 +7500,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \edef\tmp{\noexpand\input #1 } \expandafter - }\tmp + }\expandafter\starttabbox\tmp\egroup \afterenvbreak }% } @@ -7622,6 +7582,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \def\printdefunline#1#2{% \begingroup + \plainfrenchspacing % call \deffnheader: #1#2 \endheader % common ending: @@ -7892,7 +7853,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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}}}% + \def\var##1{{\setregularquotes\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } @@ -8001,11 +7962,18 @@ might help (with 'rm \jobname.?? \jobname.??s')% } \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 +8026,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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}% @@ -8224,6 +8197,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +8209,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 % @@ -8696,9 +8672,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% } \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 +8804,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +8898,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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,34 +8933,30 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 + \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax + % 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 + \fi \fi\fi \fi \endlink @@ -9049,13 +9023,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +9051,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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 +9160,10 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 @@ -9412,33 +9384,35 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 + \vbox\bgroup % vbox has better behavior than vtop here \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\hrule height 0pt\vskip-\parskip \fi % - % Leave vertical mode so that indentation from an enclosing + % 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. % 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 \else \imageindent \fi % % Output the image. \ifpdf @@ -9460,6 +9434,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi % \ifimagevmode + \egroup \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi @@ -10712,6 +10687,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0233}{\=y}% \DeclareUnicodeCharacter{0237}{\dotless{j}}% % + \DeclareUnicodeCharacter{02BC}{'}% + % \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% % % Greek letters upper case @@ -10918,6 +10895,9 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1EF8}{\~Y}% \DeclareUnicodeCharacter{1EF9}{\~y}% % + % Exotic spaces + \DeclareUnicodeCharacter{2007}{\hphantom{0}}% + % % Punctuation \DeclareUnicodeCharacter{2013}{--}% \DeclareUnicodeCharacter{2014}{---}% @@ -11263,23 +11243,6 @@ directory should work if nowhere else does.} \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 @@ -11346,6 +11309,18 @@ directory should work if nowhere else does.} \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 +11334,12 @@ directory should work if nowhere else does.} \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}% @@ -11451,7 +11426,7 @@ directory should work if nowhere else does.} \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 +11485,7 @@ directory should work if nowhere else does.} @let|=@normalverticalbar @let~=@normaltilde @let\=@ttbackslash - @markupsetuplqdefault - @markupsetuprqdefault + @setregularquotes @unsepspaces } } @@ -11604,17 +11578,15 @@ directory should work if nowhere else does.} @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..69e7b67 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-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 @@ -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..fdcd964 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-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 @@ -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" @@ -55,15 +60,29 @@ get_mk_var () # 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 +94,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 +125,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 +144,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..30ca0b2 --- 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-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 @@ -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" ( @@ -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..2ee916a 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-2022 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 index 852601d..58a1d4f 100755 --- a/configure +++ b/configure @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU make 4.3. +# Generated by GNU Autoconf 2.71 for GNU Make 4.4. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +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 +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ 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 -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +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 test "${PATH_SEPARATOR+set}" != set; then +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 || @@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + 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 @@ -109,30 +109,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ 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'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +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="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; 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 +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,42 +169,53 @@ 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 : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +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 : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +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 - test -z "$as_dir" && as_dir=. + 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 + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + 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_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -230,14 +223,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } 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 : + 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 @@ -255,18 +255,19 @@ 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'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + 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 - $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org + 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 @@ -294,6 +295,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -311,6 +313,14 @@ as_fn_exit () 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 # ------------- @@ -325,7 +335,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -334,7 +344,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -373,12 +383,13 @@ as_fn_executable_p () # 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 : +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 +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -390,18 +401,27 @@ fi # as_fn_append # 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 : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +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] # ---------------------------------------- @@ -413,9 +433,9 @@ 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 - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -442,7 +462,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -486,7 +506,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { 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 @@ -500,6 +520,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits 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*) @@ -513,6 +537,13 @@ case `echo -n x` in #((((( 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 @@ -578,62 +609,61 @@ MFLAGS= MAKEFLAGS= # Identity of this package. -PACKAGE_NAME='GNU make' +PACKAGE_NAME='GNU Make' PACKAGE_TARNAME='make' -PACKAGE_VERSION='4.3' -PACKAGE_STRING='GNU make 4.3' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' PACKAGE_BUGREPORT='bug-make@gnu.org' -PACKAGE_URL='http://www.gnu.org/software/make/' +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_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_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_func_list= -ac_header_list= +ac_header_c_list= gt_needs= -ac_subst_vars='gltests_LTLIBOBJS +ac_func_c_list= +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 @@ -649,6 +679,8 @@ PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG POSUB +LTLIBINTL +LIBINTL INTLLIBS LTLIBICONV LIBICONV @@ -667,518 +699,28 @@ SED PERL LIBGNU_LTLIBDEPS LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS gltests_WITNESS -HAVE_UNISTD_H -NEXT_AS_FIRST_DIRECTIVE_UNISTD_H -NEXT_UNISTD_H -WINDOWS_STAT_INODES -WINDOWS_64_BIT_OFF_T -NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H -NEXT_SYS_TYPES_H -NEXT_AS_FIRST_DIRECTIVE_STRING_H -NEXT_STRING_H -UNDEFINE_STRTOK_R -REPLACE_STRSIGNAL -REPLACE_STRERROR_R -REPLACE_STRERROR -REPLACE_STRTOK_R -REPLACE_STRCASESTR -REPLACE_STRSTR -REPLACE_STRNLEN -REPLACE_STRNDUP -REPLACE_STRNCAT -REPLACE_STRDUP -REPLACE_STRCHRNUL -REPLACE_STPNCPY -REPLACE_MEMMEM -REPLACE_MEMCHR -HAVE_STRVERSCMP -HAVE_DECL_STRSIGNAL -HAVE_DECL_STRERROR_R -HAVE_DECL_STRTOK_R -HAVE_STRCASESTR -HAVE_STRSEP -HAVE_STRPBRK -HAVE_DECL_STRNLEN -HAVE_DECL_STRNDUP -HAVE_DECL_STRDUP -HAVE_STRCHRNUL -HAVE_STPNCPY -HAVE_STPCPY -HAVE_RAWMEMCHR -HAVE_DECL_MEMRCHR -HAVE_MEMPCPY -HAVE_DECL_MEMMEM -HAVE_MEMCHR -HAVE_FFSLL -HAVE_FFSL -HAVE_EXPLICIT_BZERO -HAVE_MBSLEN -GNULIB_STRVERSCMP -GNULIB_STRSIGNAL -GNULIB_STRERROR_R -GNULIB_STRERROR -GNULIB_MBSTOK_R -GNULIB_MBSSEP -GNULIB_MBSSPN -GNULIB_MBSPBRK -GNULIB_MBSCSPN -GNULIB_MBSCASESTR -GNULIB_MBSPCASECMP -GNULIB_MBSNCASECMP -GNULIB_MBSCASECMP -GNULIB_MBSSTR -GNULIB_MBSRCHR -GNULIB_MBSCHR -GNULIB_MBSNLEN -GNULIB_MBSLEN -GNULIB_STRTOK_R -GNULIB_STRCASESTR -GNULIB_STRSTR -GNULIB_STRSEP -GNULIB_STRPBRK -GNULIB_STRNLEN -GNULIB_STRNDUP -GNULIB_STRNCAT -GNULIB_STRDUP -GNULIB_STRCHRNUL -GNULIB_STPNCPY -GNULIB_STPCPY -GNULIB_RAWMEMCHR -GNULIB_MEMRCHR -GNULIB_MEMPCPY -GNULIB_MEMMEM -GNULIB_MEMCHR -GNULIB_FFSLL -GNULIB_FFSL -GNULIB_EXPLICIT_BZERO -NEXT_AS_FIRST_DIRECTIVE_STDLIB_H -NEXT_STDLIB_H -NEXT_AS_FIRST_DIRECTIVE_STDIO_H -NEXT_STDIO_H -REPLACE_VSPRINTF -REPLACE_VSNPRINTF -REPLACE_VPRINTF -REPLACE_VFPRINTF -REPLACE_VDPRINTF -REPLACE_VASPRINTF -REPLACE_TMPFILE -REPLACE_STDIO_WRITE_FUNCS -REPLACE_STDIO_READ_FUNCS -REPLACE_SPRINTF -REPLACE_SNPRINTF -REPLACE_RENAMEAT -REPLACE_RENAME -REPLACE_REMOVE -REPLACE_PRINTF -REPLACE_POPEN -REPLACE_PERROR -REPLACE_OBSTACK_PRINTF -REPLACE_GETLINE -REPLACE_GETDELIM -REPLACE_FTELLO -REPLACE_FTELL -REPLACE_FSEEKO -REPLACE_FSEEK -REPLACE_FREOPEN -REPLACE_FPURGE -REPLACE_FPRINTF -REPLACE_FOPEN -REPLACE_FFLUSH -REPLACE_FDOPEN -REPLACE_FCLOSE -REPLACE_DPRINTF -HAVE_VDPRINTF -HAVE_VASPRINTF -HAVE_RENAMEAT -HAVE_POPEN -HAVE_PCLOSE -HAVE_FTELLO -HAVE_FSEEKO -HAVE_DPRINTF -HAVE_DECL_VSNPRINTF -HAVE_DECL_SNPRINTF -HAVE_DECL_OBSTACK_PRINTF -HAVE_DECL_GETLINE -HAVE_DECL_GETDELIM -HAVE_DECL_FTELLO -HAVE_DECL_FSEEKO -HAVE_DECL_FPURGE -GNULIB_VSPRINTF_POSIX -GNULIB_VSNPRINTF -GNULIB_VPRINTF_POSIX -GNULIB_VPRINTF -GNULIB_VFPRINTF_POSIX -GNULIB_VFPRINTF -GNULIB_VDPRINTF -GNULIB_VSCANF -GNULIB_VFSCANF -GNULIB_VASPRINTF -GNULIB_TMPFILE -GNULIB_STDIO_H_SIGPIPE -GNULIB_STDIO_H_NONBLOCKING -GNULIB_SPRINTF_POSIX -GNULIB_SNPRINTF -GNULIB_SCANF -GNULIB_RENAMEAT -GNULIB_RENAME -GNULIB_REMOVE -GNULIB_PUTS -GNULIB_PUTCHAR -GNULIB_PUTC -GNULIB_PRINTF_POSIX -GNULIB_PRINTF -GNULIB_POPEN -GNULIB_PERROR -GNULIB_PCLOSE -GNULIB_OBSTACK_PRINTF_POSIX -GNULIB_OBSTACK_PRINTF -GNULIB_GETLINE -GNULIB_GETDELIM -GNULIB_GETCHAR -GNULIB_GETC -GNULIB_FWRITE -GNULIB_FTELLO -GNULIB_FTELL -GNULIB_FSEEKO -GNULIB_FSEEK -GNULIB_FSCANF -GNULIB_FREOPEN -GNULIB_FREAD -GNULIB_FPUTS -GNULIB_FPUTC -GNULIB_FPURGE -GNULIB_FPRINTF_POSIX -GNULIB_FPRINTF -GNULIB_FOPEN -GNULIB_FGETS -GNULIB_FGETC -GNULIB_FFLUSH -GNULIB_FDOPEN -GNULIB_FCLOSE -GNULIB_DPRINTF -GL_GENERATE_STDINT_H_FALSE -GL_GENERATE_STDINT_H_TRUE -STDINT_H -HAVE_SYS_INTTYPES_H -HAVE_SYS_BITYPES_H -HAVE_C99_STDINT_H -WINT_T_SUFFIX -WCHAR_T_SUFFIX -SIG_ATOMIC_T_SUFFIX -SIZE_T_SUFFIX -PTRDIFF_T_SUFFIX -HAVE_SIGNED_WINT_T -HAVE_SIGNED_WCHAR_T -HAVE_SIGNED_SIG_ATOMIC_T -BITSIZEOF_WINT_T -BITSIZEOF_WCHAR_T -BITSIZEOF_SIG_ATOMIC_T -BITSIZEOF_SIZE_T -BITSIZEOF_PTRDIFF_T -HAVE_STDINT_H -NEXT_AS_FIRST_DIRECTIVE_STDINT_H -NEXT_STDINT_H -HAVE_SYS_TYPES_H -HAVE_INTTYPES_H -HAVE_WCHAR_H -GNULIB_OVERRIDES_WINT_T -NEXT_AS_FIRST_DIRECTIVE_STDDEF_H -NEXT_STDDEF_H -GL_GENERATE_STDDEF_H_FALSE -GL_GENERATE_STDDEF_H_TRUE -STDDEF_H -HAVE_WCHAR_T -HAVE_MAX_ALIGN_T -REPLACE_NULL -HAVE__BOOL GL_GENERATE_STDBOOL_H_FALSE GL_GENERATE_STDBOOL_H_TRUE STDBOOL_H -APPLE_UNIVERSAL_BUILD +HAVE__BOOL USE_SYSTEM_GLOB USE_SYSTEM_GLOB_FALSE USE_SYSTEM_GLOB_TRUE -GL_GENERATE_LIMITS_H_FALSE -GL_GENERATE_LIMITS_H_TRUE -LIMITS_H -NEXT_AS_FIRST_DIRECTIVE_LIMITS_H -NEXT_LIMITS_H HOST_CPU_C_ABI HOST_CPU -LTLIBINTL -LIBINTL +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE GETLOADAVG_LIBS -REPLACE_WCTOMB -REPLACE_UNSETENV -REPLACE_STRTOLD -REPLACE_STRTOD -REPLACE_SETSTATE -REPLACE_SETENV -REPLACE_REALPATH -REPLACE_REALLOC -REPLACE_RANDOM_R -REPLACE_RANDOM -REPLACE_QSORT_R -REPLACE_PUTENV -REPLACE_PTSNAME_R -REPLACE_PTSNAME -REPLACE_MKSTEMP -REPLACE_MBTOWC -REPLACE_MALLOC -REPLACE_INITSTATE -REPLACE_CANONICALIZE_FILE_NAME -REPLACE_CALLOC -HAVE_DECL_UNSETENV -HAVE_UNLOCKPT -HAVE_SYS_LOADAVG_H -HAVE_STRUCT_RANDOM_DATA -HAVE_STRTOULL -HAVE_STRTOLL -HAVE_STRTOLD -HAVE_STRTOD -HAVE_DECL_SETSTATE -HAVE_SETSTATE -HAVE_DECL_SETENV -HAVE_SETENV -HAVE_SECURE_GETENV -HAVE_RPMATCH -HAVE_REALPATH -HAVE_REALLOCARRAY -HAVE_RANDOM_R -HAVE_RANDOM_H -HAVE_RANDOM -HAVE_QSORT_R -HAVE_PTSNAME_R -HAVE_PTSNAME -HAVE_POSIX_OPENPT -HAVE_MKSTEMPS -HAVE_MKSTEMP -HAVE_MKOSTEMPS -HAVE_MKOSTEMP -HAVE_MKDTEMP -HAVE_MBTOWC -HAVE_DECL_INITSTATE -HAVE_INITSTATE -HAVE_GRANTPT -HAVE_GETSUBOPT +GL_GNULIB_GETLOADAVG HAVE_DECL_GETLOADAVG -HAVE_CANONICALIZE_FILE_NAME -HAVE_ATOLL -HAVE__EXIT -GNULIB_WCTOMB -GNULIB_UNSETENV -GNULIB_UNLOCKPT -GNULIB_SYSTEM_POSIX -GNULIB_STRTOULL -GNULIB_STRTOLL -GNULIB_STRTOLD -GNULIB_STRTOD -GNULIB_SETENV -GNULIB_SECURE_GETENV -GNULIB_RPMATCH -GNULIB_REALPATH -GNULIB_REALLOC_POSIX -GNULIB_REALLOCARRAY -GNULIB_RANDOM_R -GNULIB_RANDOM -GNULIB_QSORT_R -GNULIB_PUTENV -GNULIB_PTSNAME_R -GNULIB_PTSNAME -GNULIB_POSIX_OPENPT -GNULIB_MKSTEMPS -GNULIB_MKSTEMP -GNULIB_MKOSTEMPS -GNULIB_MKOSTEMP -GNULIB_MKDTEMP -GNULIB_MBTOWC -GNULIB_MALLOC_POSIX -GNULIB_GRANTPT -GNULIB_GETSUBOPT -GNULIB_GETLOADAVG -GNULIB_CANONICALIZE_FILE_NAME -GNULIB_CALLOC_POSIX -GNULIB_ATOLL -GNULIB__EXIT -NEXT_AS_FIRST_DIRECTIVE_FCNTL_H -NEXT_FCNTL_H -REPLACE_OPENAT -REPLACE_OPEN -REPLACE_FCNTL -REPLACE_CREAT -HAVE_OPENAT -HAVE_FCNTL -GNULIB_OPENAT -GNULIB_OPEN -GNULIB_NONBLOCKING -GNULIB_FCNTL -GNULIB_CREAT -EOVERFLOW_VALUE -EOVERFLOW_HIDDEN -ENOLINK_VALUE -ENOLINK_HIDDEN -EMULTIHOP_VALUE -EMULTIHOP_HIDDEN -GL_GENERATE_ERRNO_H_FALSE -GL_GENERATE_ERRNO_H_TRUE -ERRNO_H -NEXT_AS_FIRST_DIRECTIVE_ERRNO_H -NEXT_ERRNO_H -PRAGMA_COLUMNS -PRAGMA_SYSTEM_HEADER -INCLUDE_NEXT_AS_FIRST_DIRECTIVE -INCLUDE_NEXT -HAVE_WINSOCK2_H -HAVE_MSVC_INVALID_PARAMETER_HANDLER -HAVE_ALLOCA_H GL_GENERATE_ALLOCA_H_FALSE GL_GENERATE_ALLOCA_H_TRUE ALLOCA_H +HAVE_ALLOCA_H ALLOCA -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS -UNISTD_H_HAVE_WINSOCK2_H -REPLACE_WRITE -REPLACE_USLEEP -REPLACE_UNLINKAT -REPLACE_UNLINK -REPLACE_TTYNAME_R -REPLACE_TRUNCATE -REPLACE_SYMLINKAT -REPLACE_SYMLINK -REPLACE_SLEEP -REPLACE_RMDIR -REPLACE_READLINKAT -REPLACE_READLINK -REPLACE_READ -REPLACE_PWRITE -REPLACE_PREAD -REPLACE_LSEEK -REPLACE_LINKAT -REPLACE_LINK -REPLACE_LCHOWN -REPLACE_ISATTY -REPLACE_GETPASS -REPLACE_GETPAGESIZE -REPLACE_GETGROUPS -REPLACE_GETLOGIN_R -REPLACE_GETDTABLESIZE -REPLACE_GETDOMAINNAME -REPLACE_GETCWD -REPLACE_FTRUNCATE -REPLACE_FCHOWNAT -REPLACE_FACCESSAT -REPLACE_DUP2 -REPLACE_DUP -REPLACE_CLOSE -REPLACE_CHOWN -REPLACE_ACCESS -HAVE_SYS_PARAM_H -HAVE_OS_H -HAVE_DECL_TTYNAME_R -HAVE_DECL_TRUNCATE -HAVE_DECL_SETHOSTNAME -HAVE_DECL_GETUSERSHELL -HAVE_DECL_GETPAGESIZE -HAVE_DECL_GETLOGIN_R -HAVE_DECL_GETLOGIN -HAVE_DECL_GETDOMAINNAME -HAVE_DECL_FDATASYNC -HAVE_DECL_FCHDIR -HAVE_DECL_ENVIRON -HAVE_USLEEP -HAVE_UNLINKAT -HAVE_SYMLINKAT -HAVE_SYMLINK -HAVE_SLEEP -HAVE_SETHOSTNAME -HAVE_READLINKAT -HAVE_READLINK -HAVE_PWRITE -HAVE_PREAD -HAVE_PIPE2 -HAVE_PIPE -HAVE_LINKAT -HAVE_LINK -HAVE_LCHOWN -HAVE_GROUP_MEMBER -HAVE_GETPASS -HAVE_GETPAGESIZE -HAVE_GETLOGIN -HAVE_GETHOSTNAME -HAVE_GETGROUPS -HAVE_GETDTABLESIZE -HAVE_FTRUNCATE -HAVE_FSYNC -HAVE_FDATASYNC -HAVE_FCHOWNAT -HAVE_FCHDIR -HAVE_FACCESSAT -HAVE_EUIDACCESS -HAVE_DUP3 -HAVE_DUP2 -HAVE_COPY_FILE_RANGE -HAVE_CHOWN -GNULIB_WRITE -GNULIB_USLEEP -GNULIB_UNLINKAT -GNULIB_UNLINK -GNULIB_UNISTD_H_SIGPIPE -GNULIB_UNISTD_H_NONBLOCKING -GNULIB_TTYNAME_R -GNULIB_TRUNCATE -GNULIB_SYMLINKAT -GNULIB_SYMLINK -GNULIB_SLEEP -GNULIB_SETHOSTNAME -GNULIB_RMDIR -GNULIB_READLINKAT -GNULIB_READLINK -GNULIB_READ -GNULIB_PWRITE -GNULIB_PREAD -GNULIB_PIPE2 -GNULIB_PIPE -GNULIB_LSEEK -GNULIB_LINKAT -GNULIB_LINK -GNULIB_LCHOWN -GNULIB_ISATTY -GNULIB_GROUP_MEMBER -GNULIB_GETUSERSHELL -GNULIB_GETPASS -GNULIB_GETPAGESIZE -GNULIB_GETLOGIN_R -GNULIB_GETLOGIN -GNULIB_GETHOSTNAME -GNULIB_GETGROUPS -GNULIB_GETDTABLESIZE -GNULIB_GETDOMAINNAME -GNULIB_GETCWD -GNULIB_FTRUNCATE -GNULIB_FSYNC -GNULIB_FDATASYNC -GNULIB_FCHOWNAT -GNULIB_FCHDIR -GNULIB_FACCESSAT -GNULIB_EUIDACCESS -GNULIB_ENVIRON -GNULIB_DUP3 -GNULIB_DUP2 -GNULIB_DUP -GNULIB_COPY_FILE_RANGE -GNULIB_CLOSE -GNULIB_CHOWN -GNULIB_CHDIR -GNULIB_ACCESS GL_COND_LIBTOOL_FALSE GL_COND_LIBTOOL_TRUE RANLIB @@ -1187,6 +729,14 @@ AR EGREP GREP CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -1207,6 +757,9 @@ AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -1275,13 +828,14 @@ ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking +enable_largefile +enable_year2038 enable_cross_guesses enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix -enable_largefile with_guile with_customs enable_case_insensitive_file_system @@ -1372,8 +926,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -1414,9 +966,9 @@ do 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" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1440,9 +992,9 @@ do 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" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1653,9 +1205,9 @@ do 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" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1669,9 +1221,9 @@ do 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" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1715,9 +1267,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1733,7 +1285,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1797,7 +1349,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1854,7 +1406,7 @@ 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.3 to adapt to many kinds of systems. +\`configure' configures GNU Make 4.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1925,7 +1477,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU make 4.3:";; + short | recursive ) echo "Configuration of GNU Make 4.4:";; esac cat <<\_ACEOF @@ -1939,11 +1491,12 @@ Optional Features: do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 --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 - --disable-largefile omit support for large files --enable-case-insensitive-file-system assume file systems are case insensitive --disable-job-server disallow recursive make communication during -jN @@ -1984,8 +1537,8 @@ 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: . +GNU Make home page: . +General help using GNU software: . _ACEOF ac_status=$? fi @@ -2001,9 +1554,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + 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/ ;; @@ -2031,7 +1584,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # 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 @@ -2039,7 +1593,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -2048,10 +1602,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU make configure 4.3 -generated by GNU Autoconf 2.69 +GNU Make configure 4.4 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +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 @@ -2068,14 +1622,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + 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\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2083,14 +1637,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2100,6 +1655,39 @@ fi } # 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_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -2112,7 +1700,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2120,14 +1708,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2137,170 +1726,6 @@ fi } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to bug-make@gnu.org ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link 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\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$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\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$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_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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2308,17 +1733,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 () +main (void) { if (sizeof ($2)) return 0; @@ -2326,12 +1752,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2339,18 +1766,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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 @@ -2361,14 +1789,14 @@ $as_echo "$ac_res" >&6; } 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$ac_exeext + 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\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2376,17 +1804,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2401,17 +1830,61 @@ fi } # 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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. @@ -2419,16 +1892,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2446,230 +1912,55 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &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'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -2683,19 +1974,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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_c_check_decl +} # ac_fn_check_decl # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- @@ -2704,16 +1999,17 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -2722,14 +2018,15 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -2738,29 +2035,50 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2793,8 +2111,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2829,7 +2151,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2864,11 +2186,13 @@ done # 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 - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2879,8 +2203,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_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) ;; #( @@ -2904,7 +2228,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2912,14 +2236,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2927,15 +2251,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2943,8 +2267,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + 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 && @@ -2958,63 +2282,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +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. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + 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" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { 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 @@ -3024,190 +2333,579 @@ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { 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_func_list " _set_invalid_parameter_handler" -as_fn_append ac_header_list " sys/socket.h" -as_fn_append ac_func_list " fcntl" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_func_list " symlink" -as_fn_append ac_func_list " getdtablesize" -as_fn_append ac_header_list " sys/param.h" -as_fn_append ac_func_list " getprogname" -as_fn_append ac_func_list " getexecname" -as_fn_append ac_header_list " limits.h" -as_fn_append ac_header_list " wchar.h" -as_fn_append ac_header_list " stdint.h" -gt_needs="$gt_needs " -# 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,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$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=`$as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## +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 -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 +#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]); +' -# Autoconf setup -ac_aux_dir= -for ac_dir in build-aux "$srcdir"/build-aux; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 -fi +# 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 -# 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. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +#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[]; +}; -ac_config_headers="$ac_config_headers src/config.h" +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); -# 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. -# http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html -am__api_version='1.16' + const char *str = ""; + int number = 0; + float fnumber = 0; -# 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; + 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" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_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 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 + 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 + 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 @@ -3215,12 +2913,12 @@ case $as_dir/ in #(( 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" && + 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" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -3236,7 +2934,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + 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 @@ -3246,8 +2944,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ 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. @@ -3257,8 +2955,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ 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=' @@ -3312,8 +3010,8 @@ else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ 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= @@ -3332,26 +3030,23 @@ test "$program_suffix" != NONE && # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +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 - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + 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= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { 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 @@ -3371,11 +3066,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3383,11 +3079,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3398,11 +3098,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3411,11 +3111,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3423,11 +3124,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3438,11 +3143,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -3450,8 +3155,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -3463,25 +3168,31 @@ fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { 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 ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + 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 - test -z "$as_dir" && as_dir=. + 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 (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + 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 + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -3492,7 +3203,7 @@ IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + 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 @@ -3502,18 +3213,19 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3521,11 +3233,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3536,24 +3252,25 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ 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=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +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: @@ -3569,12 +3286,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -3588,7 +3305,8 @@ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3598,12 +3316,13 @@ case $enable_silent_rules in # ((( *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ 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 @@ -3615,8 +3334,8 @@ else am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ 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)' @@ -3648,17 +3367,13 @@ fi # Define the identity of the package. PACKAGE='make' - VERSION='4.3' + VERSION='4.4' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3698,6 +3413,20 @@ 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 @@ -3743,12 +3472,21 @@ fi # Checks for programs. + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ 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 @@ -3784,11 +3522,12 @@ esac fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ 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+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3814,11 +3553,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3826,11 +3566,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3841,11 +3585,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3854,11 +3598,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3866,11 +3611,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3881,11 +3630,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -3893,8 +3642,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -3907,11 +3656,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3919,11 +3669,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3934,11 +3688,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3947,11 +3701,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -3960,15 +3715,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 + 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3984,18 +3743,18 @@ if test $ac_prog_rejected = yes; then # 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+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4006,11 +3765,12 @@ if test -z "$CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -4018,11 +3778,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4033,11 +3797,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4050,11 +3814,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -4062,11 +3827,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4077,11 +3846,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4093,8 +3862,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -4102,25 +3871,129 @@ esac 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 -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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. -$as_echo "$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 +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\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4130,7 +4003,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -4138,7 +4011,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4150,9 +4023,9 @@ 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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ 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.*" @@ -4173,11 +4046,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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, @@ -4194,7 +4068,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -4210,44 +4084,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +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 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { 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_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ 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\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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 @@ -4261,15 +4137,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ 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 @@ -4278,7 +4154,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -4290,8 +4166,8 @@ _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. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ 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 @@ -4299,10 +4175,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 @@ -4310,39 +4186,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { ; @@ -4356,11 +4233,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + 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 @@ -4369,31 +4247,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { #ifndef __GNUC__ choke me @@ -4403,29 +4282,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ 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+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -4434,57 +4317,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +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 () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ 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 @@ -4499,94 +4385,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +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. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*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 don't provoke an error unfortunately, instead are silently treated - as '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's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$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 -/* 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]; +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 -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +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__" +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 : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +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 -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +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 @@ -4595,21 +4531,23 @@ 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_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { ; @@ -4637,8 +4575,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ 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. @@ -4654,13 +4592,92 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ 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= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -4767,8 +4784,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ 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 @@ -4783,577 +4800,221 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "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 ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # 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. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : + 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 -else - # 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. + + + + + + { 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. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # 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 +# 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 - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$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. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # 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. +{ 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. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # 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 - # 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_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include + #include + mbstate_t x; int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : +if ac_fn_c_try_compile "$LINENO" +then : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; int -main () +main (void) { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then +{ 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; } -$as_echo "#define STDC_HEADERS 1" >>confdefs.h + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h -done + 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 - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi + 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 - if test "$MINIX" = yes; then + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 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 -$as_echo "#define _POSIX_1_SOURCE 2" >>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 -$as_echo "#define _MINIX 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 -$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h - fi + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ +fi - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes +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 - ac_cv_safe_to_define___extensions__=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 + 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 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h - - $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h - - $as_echo "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 -$as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; } -if ${ac_cv_should_define__xopen_source+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_should_define__xopen_source=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - mbstate_t x; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #define _XOPEN_SOURCE 500 - #include - mbstate_t x; -int -main () -{ - - ; - 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.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 -$as_echo "$ac_cv_should_define__xopen_source" >&6; } - test $ac_cv_should_define__xopen_source = yes && - $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h - - $as_echo "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +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 @@ -5362,11 +5023,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5374,11 +5036,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5389,11 +5055,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -5401,8 +5067,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -5415,11 +5081,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5427,11 +5094,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5442,11 +5113,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5455,11 +5126,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5468,15 +5140,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 + 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5492,18 +5168,18 @@ if test $ac_prog_rejected = yes; then # 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+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5514,11 +5190,12 @@ if test -z "$CC"; then 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5526,11 +5203,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5541,11 +5222,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5558,11 +5239,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5570,11 +5252,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5585,11 +5271,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5601,34 +5287,138 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +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. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +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 +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\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5638,20 +5428,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { #ifndef __GNUC__ choke me @@ -5661,29 +5452,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ 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+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -5692,57 +5487,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +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 () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ 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 @@ -5757,94 +5555,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +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. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*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 don't provoke an error unfortunately, instead are silently treated - as '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's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$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 -/* 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]; +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 -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +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__" +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 : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +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 -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +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 @@ -5853,21 +5701,23 @@ 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_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { ; @@ -5895,8 +5745,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ 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. @@ -5912,13 +5762,92 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ 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= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -6025,8 +5954,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ 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 @@ -6044,497 +5973,27 @@ fi # 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 - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 -$as_echo_n "checking for Minix Amsterdam compiler... " >&6; } -if ${gl_cv_c_amsterdam_compiler+:} false; then : - $as_echo_n "(cached) " >&6 -else - - 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 - gl_cv_c_amsterdam_compiler=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="ar" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - test -z "$as_dir" && as_dir=. - 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" - $as_echo "$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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$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 - - - - - # Pre-early section. - - - - # 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 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 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 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 snippet/warn-on-use: - # Code from module ssize_t: - # 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: - - - - - - - - # Check whether --enable-cross-guesses was given. -if test "${enable_cross_guesses+set}" = set; then : - enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 -$as_echo "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} - enableval=conservative - fi - gl_cross_guesses="$enableval" -else - 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_ - - - GNULIB_ACCESS=0; - GNULIB_CHDIR=0; - GNULIB_CHOWN=0; - GNULIB_CLOSE=0; - GNULIB_COPY_FILE_RANGE=0; - GNULIB_DUP=0; - GNULIB_DUP2=0; - GNULIB_DUP3=0; - GNULIB_ENVIRON=0; - GNULIB_EUIDACCESS=0; - GNULIB_FACCESSAT=0; - GNULIB_FCHDIR=0; - GNULIB_FCHOWNAT=0; - GNULIB_FDATASYNC=0; - GNULIB_FSYNC=0; - GNULIB_FTRUNCATE=0; - GNULIB_GETCWD=0; - GNULIB_GETDOMAINNAME=0; - GNULIB_GETDTABLESIZE=0; - GNULIB_GETGROUPS=0; - GNULIB_GETHOSTNAME=0; - GNULIB_GETLOGIN=0; - GNULIB_GETLOGIN_R=0; - GNULIB_GETPAGESIZE=0; - GNULIB_GETPASS=0; - GNULIB_GETUSERSHELL=0; - GNULIB_GROUP_MEMBER=0; - GNULIB_ISATTY=0; - GNULIB_LCHOWN=0; - GNULIB_LINK=0; - GNULIB_LINKAT=0; - GNULIB_LSEEK=0; - GNULIB_PIPE=0; - GNULIB_PIPE2=0; - GNULIB_PREAD=0; - GNULIB_PWRITE=0; - GNULIB_READ=0; - GNULIB_READLINK=0; - GNULIB_READLINKAT=0; - GNULIB_RMDIR=0; - GNULIB_SETHOSTNAME=0; - GNULIB_SLEEP=0; - GNULIB_SYMLINK=0; - GNULIB_SYMLINKAT=0; - GNULIB_TRUNCATE=0; - GNULIB_TTYNAME_R=0; - GNULIB_UNISTD_H_NONBLOCKING=0; - GNULIB_UNISTD_H_SIGPIPE=0; - GNULIB_UNLINK=0; - GNULIB_UNLINKAT=0; - GNULIB_USLEEP=0; - GNULIB_WRITE=0; - HAVE_CHOWN=1; - HAVE_COPY_FILE_RANGE=1; - HAVE_DUP2=1; - HAVE_DUP3=1; - HAVE_EUIDACCESS=1; - HAVE_FACCESSAT=1; - HAVE_FCHDIR=1; - HAVE_FCHOWNAT=1; - HAVE_FDATASYNC=1; - HAVE_FSYNC=1; - HAVE_FTRUNCATE=1; - HAVE_GETDTABLESIZE=1; - HAVE_GETGROUPS=1; - HAVE_GETHOSTNAME=1; - HAVE_GETLOGIN=1; - HAVE_GETPAGESIZE=1; - HAVE_GETPASS=1; - HAVE_GROUP_MEMBER=1; - HAVE_LCHOWN=1; - HAVE_LINK=1; - HAVE_LINKAT=1; - HAVE_PIPE=1; - HAVE_PIPE2=1; - HAVE_PREAD=1; - HAVE_PWRITE=1; - HAVE_READLINK=1; - HAVE_READLINKAT=1; - HAVE_SETHOSTNAME=1; - HAVE_SLEEP=1; - HAVE_SYMLINK=1; - HAVE_SYMLINKAT=1; - HAVE_UNLINKAT=1; - HAVE_USLEEP=1; - HAVE_DECL_ENVIRON=1; - HAVE_DECL_FCHDIR=1; - HAVE_DECL_FDATASYNC=1; - HAVE_DECL_GETDOMAINNAME=1; - HAVE_DECL_GETLOGIN=1; - HAVE_DECL_GETLOGIN_R=1; - HAVE_DECL_GETPAGESIZE=1; - HAVE_DECL_GETUSERSHELL=1; - HAVE_DECL_SETHOSTNAME=1; - HAVE_DECL_TRUNCATE=1; - HAVE_DECL_TTYNAME_R=1; - HAVE_OS_H=0; - HAVE_SYS_PARAM_H=0; - REPLACE_ACCESS=0; - REPLACE_CHOWN=0; - REPLACE_CLOSE=0; - REPLACE_DUP=0; - REPLACE_DUP2=0; - REPLACE_FACCESSAT=0; - REPLACE_FCHOWNAT=0; - REPLACE_FTRUNCATE=0; - REPLACE_GETCWD=0; - REPLACE_GETDOMAINNAME=0; - REPLACE_GETDTABLESIZE=0; - REPLACE_GETLOGIN_R=0; - REPLACE_GETGROUPS=0; - REPLACE_GETPAGESIZE=0; - REPLACE_GETPASS=0; - REPLACE_ISATTY=0; - REPLACE_LCHOWN=0; - REPLACE_LINK=0; - REPLACE_LINKAT=0; - REPLACE_LSEEK=0; - REPLACE_PREAD=0; - REPLACE_PWRITE=0; - REPLACE_READ=0; - REPLACE_READLINK=0; - REPLACE_READLINKAT=0; - REPLACE_RMDIR=0; - REPLACE_SLEEP=0; - REPLACE_SYMLINK=0; - REPLACE_SYMLINKAT=0; - REPLACE_TRUNCATE=0; - REPLACE_TTYNAME_R=0; - REPLACE_UNLINK=0; - REPLACE_UNLINKAT=0; - REPLACE_USLEEP=0; - REPLACE_WRITE=0; - UNISTD_H_HAVE_WINSOCK2_H=0; - UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; - - -# 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 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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"` + 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 +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ 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;; @@ -6553,21 +6012,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 + 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ 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;; @@ -6586,4577 +6046,1131 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -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 -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF -fi -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -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 - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then + case "$host_os" in + openbsd*) -$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h +printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h -fi + ;; + esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else +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. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} +#include + Syntax error _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "#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 - -$as_echo "#define C_ALLOCA 1" >>confdefs.h +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else + # 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. */ -#if defined CRAY && ! defined CRAY2 -webecray -#else -wenotbecray -#endif - +#include _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then : - ac_cv_os_cray=yes -else - ac_cv_os_cray=no +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* +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi + done + ac_cv_prog_CPP=$CPP - done fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 + 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. */ -$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 - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - - - - for ac_func in $ac_func_list -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#include + Syntax error _ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : +else $as_nop + # Broken: fails on valid input. +continue fi -done - - - - - - if test $ac_cv_func__set_invalid_parameter_handler = yes; then - HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 - -$as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h - - else - HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 - fi - - - - +rm -f conftest.err conftest.i conftest.$ac_ext - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 + # 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5 -$as_echo_n "checking whether // is distinct from /... " >&6; } -if ${gl_cv_double_slash_root+:} false; then : - $as_echo_n "(cached) " >&6 + $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 - 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 + ac_cv_path_GREP=$GREP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5 -$as_echo "$gl_cv_double_slash_root" >&6; } - if test "$gl_cv_double_slash_root" = yes; then - -$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h - - 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" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5 -$as_echo_n "checking whether the preprocessor supports include_next... " >&6; } -if ${gl_cv_have_include_next+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -rf conftestd1a conftestd1b conftestd2 - mkdir conftestd1a conftestd1b conftestd2 - 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" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_have_include_next=yes -else - CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_have_include_next=buggy -else - gl_cv_have_include_next=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$gl_save_CPPFLAGS" - rm -rf conftestd1a conftestd1b conftestd2 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5 -$as_echo "$gl_cv_have_include_next" >&6; } - 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 - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5 -$as_echo_n "checking whether system header files limit the line length... " >&6; } -if ${gl_cv_pragma_columns+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef __TANDEM -choke me -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "choke me" >/dev/null 2>&1; then : - gl_cv_pragma_columns=yes -else - gl_cv_pragma_columns=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5 -$as_echo "$gl_cv_pragma_columns" >&6; } - if test $gl_cv_pragma_columns = yes; then - PRAGMA_COLUMNS="#pragma COLUMNS 10000" - else - PRAGMA_COLUMNS= - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5 -$as_echo_n "checking for complete errno.h... " >&6; } -if ${gl_cv_header_errno_h_complete+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#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 - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "booboo" >/dev/null 2>&1; then : - gl_cv_header_errno_h_complete=no -else - gl_cv_header_errno_h_complete=yes -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5 -$as_echo "$gl_cv_header_errno_h_complete" >&6; } - if test $gl_cv_header_errno_h_complete = yes; then - ERRNO_H='' - else - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_errno_h='<'errno.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_errno_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'errno.h' \ - | 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 - }' - - gl_cv_absolute_errno_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_errno_h - gl_cv_next_errno_h='"'$gl_header'"' - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5 -$as_echo "$gl_cv_next_errno_h" >&6; } - fi - NEXT_ERRNO_H=$gl_cv_next_errno_h - - 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='<'errno.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_errno_h - fi - NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive - - - - - ERRNO_H='errno.h' - fi - - if test -n "$ERRNO_H"; then - GL_GENERATE_ERRNO_H_TRUE= - GL_GENERATE_ERRNO_H_FALSE='#' -else - GL_GENERATE_ERRNO_H_TRUE='#' - GL_GENERATE_ERRNO_H_FALSE= -fi - - - if test -n "$ERRNO_H"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5 -$as_echo_n "checking for EMULTIHOP value... " >&6; } -if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef EMULTIHOP -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_EMULTIHOP=yes -else - gl_cv_header_errno_h_EMULTIHOP=no -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_EMULTIHOP = no; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _XOPEN_SOURCE_EXTENDED 1 -#include -#ifdef EMULTIHOP -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_EMULTIHOP=hidden -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then - if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" " -#define _XOPEN_SOURCE_EXTENDED 1 -#include -/* The following two lines are a workaround against an autoconf-2.52 bug. */ -#include -#include -"; then : - -fi - - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5 -$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; } - case $gl_cv_header_errno_h_EMULTIHOP in - yes | no) - EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE= - ;; - *) - EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP" - ;; - esac - - - fi - - - if test -n "$ERRNO_H"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5 -$as_echo_n "checking for ENOLINK value... " >&6; } -if ${gl_cv_header_errno_h_ENOLINK+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef ENOLINK -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_ENOLINK=yes -else - gl_cv_header_errno_h_ENOLINK=no -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_ENOLINK = no; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _XOPEN_SOURCE_EXTENDED 1 -#include -#ifdef ENOLINK -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_ENOLINK=hidden -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_ENOLINK = hidden; then - if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" " -#define _XOPEN_SOURCE_EXTENDED 1 -#include -/* The following two lines are a workaround against an autoconf-2.52 bug. */ -#include -#include -"; then : - -fi - - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5 -$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; } - case $gl_cv_header_errno_h_ENOLINK in - yes | no) - ENOLINK_HIDDEN=0; ENOLINK_VALUE= - ;; - *) - ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK" - ;; - esac - - - fi - - - if test -n "$ERRNO_H"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5 -$as_echo_n "checking for EOVERFLOW value... " >&6; } -if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef EOVERFLOW -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_EOVERFLOW=yes -else - gl_cv_header_errno_h_EOVERFLOW=no -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_EOVERFLOW = no; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _XOPEN_SOURCE_EXTENDED 1 -#include -#ifdef EOVERFLOW -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - gl_cv_header_errno_h_EOVERFLOW=hidden -fi -rm -f conftest* - - if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then - if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" " -#define _XOPEN_SOURCE_EXTENDED 1 -#include -/* The following two lines are a workaround against an autoconf-2.52 bug. */ -#include -#include -"; then : - -fi - - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5 -$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; } - case $gl_cv_header_errno_h_EOVERFLOW in - yes | no) - EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE= - ;; - *) - EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW" - ;; - esac - - - fi - - -ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" -if test "x$ac_cv_have_decl_strerror_r" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_STRERROR_R $ac_have_decl -_ACEOF - -for ac_func in strerror_r -do : - ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r" -if test "x$ac_cv_func_strerror_r" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRERROR_R 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 -$as_echo_n "checking whether strerror_r returns char *... " >&6; } -if ${ac_cv_func_strerror_r_char_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ac_cv_func_strerror_r_char_p=no - if test $ac_cv_have_decl_strerror_r = yes; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - char *p = strerror_r (0, buf, sizeof buf); - return !p || x; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_func_strerror_r_char_p=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - else - # strerror_r is not declared. Choose between - # systems that have relatively inaccessible declarations for the - # function. BeOS and DEC UNIX 4.0 fall in this category, but the - # former has a strerror_r that returns char*, while the latter - # has a strerror_r that returns `int'. - # This test should segfault on the DEC system. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - extern char *strerror_r (); -int -main () -{ -char buf[100]; - char x = *strerror_r (0, buf, sizeof buf); - return ! isalpha (x); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_strerror_r_char_p=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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 -$as_echo "$ac_cv_func_strerror_r_char_p" >&6; } -if test $ac_cv_func_strerror_r_char_p = yes; then - -$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h - -fi - - - XGETTEXT_EXTRA_OPTIONS= - - - - - - GNULIB_CREAT=0; - GNULIB_FCNTL=0; - GNULIB_NONBLOCKING=0; - GNULIB_OPEN=0; - GNULIB_OPENAT=0; - HAVE_FCNTL=1; - HAVE_OPENAT=1; - REPLACE_CREAT=0; - REPLACE_FCNTL=0; - REPLACE_OPEN=0; - REPLACE_OPENAT=0; - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 -$as_echo_n "checking for working fcntl.h... " >&6; } -if ${gl_cv_header_working_fcntl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - 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 - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#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 -main () -{ - - 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; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_header_working_fcntl_h=yes -else - 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 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 -$as_echo "$gl_cv_header_working_fcntl_h" >&6; } - - case $gl_cv_header_working_fcntl_h in #( - *O_NOATIME* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -#define HAVE_WORKING_O_NOATIME $ac_val -_ACEOF - - - case $gl_cv_header_working_fcntl_h in #( - *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -#define HAVE_WORKING_O_NOFOLLOW $ac_val -_ACEOF - - -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 - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -if test "x$ac_cv_type_mode_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF - -fi - - - ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" -if test "x$ac_cv_func_eaccess" = xyes; then : - -else - -$as_echo "#define eaccess access" >>confdefs.h - -fi - - - - -ac_fn_c_check_decl "$LINENO" "getdtablesize" "ac_cv_have_decl_getdtablesize" "$ac_includes_default" -if test "x$ac_cv_have_decl_getdtablesize" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETDTABLESIZE $ac_have_decl -_ACEOF - - - GNULIB__EXIT=0; - GNULIB_ATOLL=0; - GNULIB_CALLOC_POSIX=0; - GNULIB_CANONICALIZE_FILE_NAME=0; - GNULIB_GETLOADAVG=0; - GNULIB_GETSUBOPT=0; - GNULIB_GRANTPT=0; - GNULIB_MALLOC_POSIX=0; - GNULIB_MBTOWC=0; - GNULIB_MKDTEMP=0; - GNULIB_MKOSTEMP=0; - GNULIB_MKOSTEMPS=0; - GNULIB_MKSTEMP=0; - GNULIB_MKSTEMPS=0; - GNULIB_POSIX_OPENPT=0; - GNULIB_PTSNAME=0; - GNULIB_PTSNAME_R=0; - GNULIB_PUTENV=0; - GNULIB_QSORT_R=0; - GNULIB_RANDOM=0; - GNULIB_RANDOM_R=0; - GNULIB_REALLOCARRAY=0; - GNULIB_REALLOC_POSIX=0; - GNULIB_REALPATH=0; - GNULIB_RPMATCH=0; - GNULIB_SECURE_GETENV=0; - GNULIB_SETENV=0; - GNULIB_STRTOD=0; - GNULIB_STRTOLD=0; - GNULIB_STRTOLL=0; - GNULIB_STRTOULL=0; - GNULIB_SYSTEM_POSIX=0; - GNULIB_UNLOCKPT=0; - GNULIB_UNSETENV=0; - GNULIB_WCTOMB=0; - HAVE__EXIT=1; - HAVE_ATOLL=1; - HAVE_CANONICALIZE_FILE_NAME=1; - HAVE_DECL_GETLOADAVG=1; - HAVE_GETSUBOPT=1; - HAVE_GRANTPT=1; - HAVE_INITSTATE=1; - HAVE_DECL_INITSTATE=1; - HAVE_MBTOWC=1; - HAVE_MKDTEMP=1; - HAVE_MKOSTEMP=1; - HAVE_MKOSTEMPS=1; - HAVE_MKSTEMP=1; - HAVE_MKSTEMPS=1; - HAVE_POSIX_OPENPT=1; - HAVE_PTSNAME=1; - HAVE_PTSNAME_R=1; - HAVE_QSORT_R=1; - HAVE_RANDOM=1; - HAVE_RANDOM_H=1; - HAVE_RANDOM_R=1; - HAVE_REALLOCARRAY=1; - HAVE_REALPATH=1; - HAVE_RPMATCH=1; - HAVE_SECURE_GETENV=1; - HAVE_SETENV=1; - HAVE_DECL_SETENV=1; - HAVE_SETSTATE=1; - HAVE_DECL_SETSTATE=1; - HAVE_STRTOD=1; - HAVE_STRTOLD=1; - HAVE_STRTOLL=1; - HAVE_STRTOULL=1; - HAVE_STRUCT_RANDOM_DATA=1; - HAVE_SYS_LOADAVG_H=0; - HAVE_UNLOCKPT=1; - HAVE_DECL_UNSETENV=1; - REPLACE_CALLOC=0; - REPLACE_CANONICALIZE_FILE_NAME=0; - REPLACE_INITSTATE=0; - REPLACE_MALLOC=0; - REPLACE_MBTOWC=0; - REPLACE_MKSTEMP=0; - REPLACE_PTSNAME=0; - REPLACE_PTSNAME_R=0; - REPLACE_PUTENV=0; - REPLACE_QSORT_R=0; - REPLACE_RANDOM=0; - REPLACE_RANDOM_R=0; - REPLACE_REALLOC=0; - REPLACE_REALPATH=0; - REPLACE_SETENV=0; - REPLACE_SETSTATE=0; - REPLACE_STRTOD=0; - REPLACE_STRTOLD=0; - REPLACE_UNSETENV=0; - REPLACE_WCTOMB=0; - - - - - - - - - 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 : - gl_asmext='asm' - gl_c_asm_opt='-c -Fa' - -else - gl_asmext='s' - gl_c_asm_opt='-S' - -fi -rm -f conftest* - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 -$as_echo_n "checking host CPU and C ABI... " >&6; } -if ${gl_cv_host_cpu_c_abi+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - gl_cv_host_cpu_c_abi=x86_64 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - gl_cv_host_cpu_c_abi=i386 -fi -rm -f core conftest.err conftest.$ac_objext 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 - gl_cv_host_cpu_c_abi=arm64 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - # 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=$? - $as_echo "$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.$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 - gl_cv_host_cpu_c_abi=hppa -fi -rm -f core conftest.err conftest.$ac_objext 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 - gl_cv_host_cpu_c_abi=ia64 -fi -rm -f core conftest.err conftest.$ac_objext 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 - # 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 - gl_cv_host_cpu_c_abi=mips -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext 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 _ARCH_PPC64 - 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 - gl_cv_host_cpu_c_abi=powerpc64 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -else - gl_cv_host_cpu_c_abi=powerpc -fi -rm -f core conftest.err conftest.$ac_objext 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 - cpu=riscv32 -fi -rm -f core conftest.err conftest.$ac_objext 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 - main_abi=ilp32 -fi -rm -f core conftest.err conftest.$ac_objext 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 - 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 - float_abi='' -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext 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 - gl_cv_host_cpu_c_abi=s390 -fi -rm -f core conftest.err conftest.$ac_objext 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 - gl_cv_host_cpu_c_abi=sparc -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ;; - - *) - gl_cv_host_cpu_c_abi="$host_cpu" - ;; - esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 -$as_echo "$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 <' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_limits_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test $ac_cv_header_limits_h = yes; then - - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'limits.h' \ - | 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 - }' - - gl_cv_absolute_limits_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_limits_h - gl_cv_next_limits_h='"'$gl_header'"' - else - gl_cv_next_limits_h='<'limits.h'>' - fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_limits_h" >&5 -$as_echo "$gl_cv_next_limits_h" >&6; } - fi - NEXT_LIMITS_H=$gl_cv_next_limits_h - - 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='<'limits.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_limits_h - fi - NEXT_AS_FIRST_DIRECTIVE_LIMITS_H=$gl_next_as_first_directive - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc." >&5 -$as_echo_n "checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.... " >&6; } -if ${gl_cv_header_limits_width+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#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; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_limits_width=yes -else - gl_cv_header_limits_width=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_limits_width" >&5 -$as_echo "$gl_cv_header_limits_width" >&6; } - if test "$gl_cv_header_limits_width" = yes; then - LIMITS_H= - else - LIMITS_H=limits.h - fi - - if test -n "$LIMITS_H"; then - GL_GENERATE_LIMITS_H_TRUE= - GL_GENERATE_LIMITS_H_FALSE='#' -else - GL_GENERATE_LIMITS_H_TRUE='#' - GL_GENERATE_LIMITS_H_FALSE= -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 -$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; } -if ${gl_cv_func_malloc_posix+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#if defined _WIN32 && ! defined __CYGWIN__ - choke me - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_func_malloc_posix=yes -else - gl_cv_func_malloc_posix=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 -$as_echo "$gl_cv_func_malloc_posix" >&6; } - - - - - - gl_cv_c_multiarch=no - 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 : - - 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 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $gl_cv_c_multiarch = yes; then - APPLE_UNIVERSAL_BUILD=1 - else - APPLE_UNIVERSAL_BUILD=0 - fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } -if ${ac_cv_header_stdbool_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #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; - -int -main () -{ - - 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); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdbool_h=yes -else - ac_cv_header_stdbool_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -$as_echo "$ac_cv_header_stdbool_h" >&6; } - ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE__BOOL 1 -_ACEOF - - -fi - - - - REPLACE_NULL=0; - HAVE_MAX_ALIGN_T=1; - HAVE_WCHAR_T=1; - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 -$as_echo_n "checking for wchar_t... " >&6; } -if ${gt_cv_c_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - wchar_t foo = (wchar_t)'\0'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wchar_t=yes -else - gt_cv_c_wchar_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 -$as_echo "$gt_cv_c_wchar_t" >&6; } - if test $gt_cv_c_wchar_t = yes; then - -$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 -$as_echo_n "checking for wint_t... " >&6; } -if ${gt_cv_c_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* 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'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wint_t=yes -else - gt_cv_c_wint_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 -$as_echo "$gt_cv_c_wint_t" >&6; } - if test $gt_cv_c_wint_t = yes; then - -$as_echo "#define HAVE_WINT_T 1" >>confdefs.h - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5 -$as_echo_n "checking whether wint_t is too small... " >&6; } -if ${gl_cv_type_wint_t_too_small+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* 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]; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_type_wint_t_too_small=no -else - gl_cv_type_wint_t_too_small=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5 -$as_echo "$gl_cv_type_wint_t_too_small" >&6; } - 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 - - - - - - - - - - - - -$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h - - -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h - - - - if test $ac_cv_header_wchar_h = yes; then - HAVE_WCHAR_H=1 - else - HAVE_WCHAR_H=0 - fi - - - if test $ac_cv_header_inttypes_h = yes; then - HAVE_INTTYPES_H=1 - else - HAVE_INTTYPES_H=0 - fi - - - if test $ac_cv_header_sys_types_h = yes; then - HAVE_SYS_TYPES_H=1 - else - HAVE_SYS_TYPES_H=0 - fi - - - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_stdint_h='<'stdint.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_stdint_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test $ac_cv_header_stdint_h = yes; then - - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'stdint.h' \ - | 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 - }' - - gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_stdint_h - gl_cv_next_stdint_h='"'$gl_header'"' - else - gl_cv_next_stdint_h='<'stdint.h'>' - fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5 -$as_echo "$gl_cv_next_stdint_h" >&6; } - fi - NEXT_STDINT_H=$gl_cv_next_stdint_h - - 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='<'stdint.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_stdint_h - fi - NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive - - - - - if test $ac_cv_header_stdint_h = yes; then - HAVE_STDINT_H=1 - else - HAVE_STDINT_H=0 - fi - - - if test $ac_cv_header_stdint_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5 -$as_echo_n "checking whether stdint.h conforms to C99... " >&6; } -if ${gl_cv_header_working_stdint_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_header_working_stdint_h=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#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 - - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - -#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; -}; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if test "$cross_compiling" = yes; then : - 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 - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#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 - - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - -#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 - }; - -int -main () -{ - - 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; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_header_working_stdint_h=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 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5 -$as_echo "$gl_cv_header_working_stdint_h" >&6; } - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h predates C++11" >&5 -$as_echo_n "checking whether stdint.h predates C++11... " >&6; } -if ${gl_cv_header_stdint_predates_cxx11_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_header_stdint_predates_cxx11_h=yes - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ -#include - - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - -intmax_t im = INTMAX_MAX; -int32_t i32 = INT32_C (0x7fffffff); - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_stdint_predates_cxx11_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_predates_cxx11_h" >&5 -$as_echo "$gl_cv_header_stdint_predates_cxx11_h" >&6; } - - if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then - -$as_echo "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h - - -$as_echo "#define __STDC_LIMIT_MACROS 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5 -$as_echo_n "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; } -if ${gl_cv_header_stdint_width+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_header_stdint_width=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* 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 - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - int iw = UINTMAX_WIDTH; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_stdint_width=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5 -$as_echo "$gl_cv_header_stdint_width" >&6; } - if test "$gl_cv_header_stdint_width" = yes; then - STDINT_H= - fi - ;; - *) - for ac_header in sys/inttypes.h sys/bitypes.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - 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 - - - if test $APPLE_UNIVERSAL_BUILD = 0; then - - - for gltype in ptrdiff_t size_t ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 -$as_echo_n "checking for bit size of $gltype... " >&6; } -if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - -#include "; then : - -else - result=unknown -fi - - eval gl_cv_bitsizeof_${gltype}=\$result - -fi -eval ac_res=\$gl_cv_bitsizeof_${gltype} - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval result=\$gl_cv_bitsizeof_${gltype} - if test $result = unknown; then - result=0 - fi - GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - cat >>confdefs.h <<_ACEOF -#define BITSIZEOF_${GLTYPE} $result -_ACEOF - - eval BITSIZEOF_${GLTYPE}=\$result - done - - - fi - - - for gltype in sig_atomic_t wchar_t wint_t ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 -$as_echo_n "checking for bit size of $gltype... " >&6; } -if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - -#include "; then : - -else - result=unknown -fi - - eval gl_cv_bitsizeof_${gltype}=\$result - -fi -eval ac_res=\$gl_cv_bitsizeof_${gltype} - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval result=\$gl_cv_bitsizeof_${gltype} - if test $result = unknown; then - result=0 - fi - GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - cat >>confdefs.h <<_ACEOF -#define BITSIZEOF_${GLTYPE} $result -_ACEOF - - eval BITSIZEOF_${GLTYPE}=\$result - done - - - - - for gltype in sig_atomic_t wchar_t wint_t ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5 -$as_echo_n "checking whether $gltype is signed... " >&6; } -if eval \${gl_cv_type_${gltype}_signed+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - int verify[2 * (($gltype) -1 < ($gltype) 0) - 1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - result=yes -else - result=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - eval gl_cv_type_${gltype}_signed=\$result - -fi -eval ac_res=\$gl_cv_type_${gltype}_signed - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval result=\$gl_cv_type_${gltype}_signed - GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - if test "$result" = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_SIGNED_${GLTYPE} 1 -_ACEOF - - eval HAVE_SIGNED_${GLTYPE}=1 - else - eval HAVE_SIGNED_${GLTYPE}=0 - fi - done - - - gl_cv_type_ptrdiff_t_signed=yes - gl_cv_type_size_t_signed=no - if test $APPLE_UNIVERSAL_BUILD = 0; then - - - for gltype in ptrdiff_t size_t ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 -$as_echo_n "checking for $gltype integer literal suffix... " >&6; } -if eval \${gl_cv_type_${gltype}_suffix+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - extern $gltype foo; - extern $gltype1 foo; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval gl_cv_type_${gltype}_suffix=\$glsuf -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" != no && break - done -fi -eval ac_res=\$gl_cv_type_${gltype}_suffix - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" = no && result= - eval ${GLTYPE}_SUFFIX=\$result - cat >>confdefs.h <<_ACEOF -#define ${GLTYPE}_SUFFIX $result -_ACEOF - - done - - - fi - - - for gltype in sig_atomic_t wchar_t wint_t ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 -$as_echo_n "checking for $gltype integer literal suffix... " >&6; } -if eval \${gl_cv_type_${gltype}_suffix+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* BSD/OS 4.0.1 has a bug: , and must be - included before . */ - #include - #include - #if HAVE_WCHAR_H - # include - # include - # include - #endif - - extern $gltype foo; - extern $gltype1 foo; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval gl_cv_type_${gltype}_suffix=\$glsuf -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" != no && break - done -fi -eval ac_res=\$gl_cv_type_${gltype}_suffix - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` - eval result=\$gl_cv_type_${gltype}_suffix - test "$result" = no && result= - eval ${GLTYPE}_SUFFIX=\$result - cat >>confdefs.h <<_ACEOF -#define ${GLTYPE}_SUFFIX $result -_ACEOF - - done - - - - if test $GNULIB_OVERRIDES_WINT_T = 1; then - BITSIZEOF_WINT_T=32 - fi - - ;; - esac - - - - LIMITS_H='limits.h' - if test -n "$LIMITS_H"; then - GL_GENERATE_LIMITS_H_TRUE= - GL_GENERATE_LIMITS_H_FALSE='#' -else - GL_GENERATE_LIMITS_H_TRUE='#' - GL_GENERATE_LIMITS_H_FALSE= -fi - - - - - - - - if test -n "$STDINT_H"; then - GL_GENERATE_STDINT_H_TRUE= - GL_GENERATE_STDINT_H_FALSE='#' -else - GL_GENERATE_STDINT_H_TRUE='#' - GL_GENERATE_STDINT_H_FALSE= -fi - - - - GNULIB_DPRINTF=0; - GNULIB_FCLOSE=0; - GNULIB_FDOPEN=0; - GNULIB_FFLUSH=0; - GNULIB_FGETC=0; - GNULIB_FGETS=0; - GNULIB_FOPEN=0; - GNULIB_FPRINTF=0; - GNULIB_FPRINTF_POSIX=0; - GNULIB_FPURGE=0; - GNULIB_FPUTC=0; - GNULIB_FPUTS=0; - GNULIB_FREAD=0; - GNULIB_FREOPEN=0; - GNULIB_FSCANF=0; - GNULIB_FSEEK=0; - GNULIB_FSEEKO=0; - GNULIB_FTELL=0; - GNULIB_FTELLO=0; - GNULIB_FWRITE=0; - GNULIB_GETC=0; - GNULIB_GETCHAR=0; - GNULIB_GETDELIM=0; - GNULIB_GETLINE=0; - GNULIB_OBSTACK_PRINTF=0; - GNULIB_OBSTACK_PRINTF_POSIX=0; - GNULIB_PCLOSE=0; - GNULIB_PERROR=0; - GNULIB_POPEN=0; - GNULIB_PRINTF=0; - GNULIB_PRINTF_POSIX=0; - GNULIB_PUTC=0; - GNULIB_PUTCHAR=0; - GNULIB_PUTS=0; - GNULIB_REMOVE=0; - GNULIB_RENAME=0; - GNULIB_RENAMEAT=0; - GNULIB_SCANF=0; - GNULIB_SNPRINTF=0; - GNULIB_SPRINTF_POSIX=0; - GNULIB_STDIO_H_NONBLOCKING=0; - GNULIB_STDIO_H_SIGPIPE=0; - GNULIB_TMPFILE=0; - GNULIB_VASPRINTF=0; - GNULIB_VFSCANF=0; - GNULIB_VSCANF=0; - GNULIB_VDPRINTF=0; - GNULIB_VFPRINTF=0; - GNULIB_VFPRINTF_POSIX=0; - GNULIB_VPRINTF=0; - GNULIB_VPRINTF_POSIX=0; - GNULIB_VSNPRINTF=0; - GNULIB_VSPRINTF_POSIX=0; - HAVE_DECL_FPURGE=1; - HAVE_DECL_FSEEKO=1; - HAVE_DECL_FTELLO=1; - HAVE_DECL_GETDELIM=1; - HAVE_DECL_GETLINE=1; - HAVE_DECL_OBSTACK_PRINTF=1; - HAVE_DECL_SNPRINTF=1; - HAVE_DECL_VSNPRINTF=1; - HAVE_DPRINTF=1; - HAVE_FSEEKO=1; - HAVE_FTELLO=1; - HAVE_PCLOSE=1; - HAVE_POPEN=1; - HAVE_RENAMEAT=1; - HAVE_VASPRINTF=1; - HAVE_VDPRINTF=1; - REPLACE_DPRINTF=0; - REPLACE_FCLOSE=0; - REPLACE_FDOPEN=0; - REPLACE_FFLUSH=0; - REPLACE_FOPEN=0; - REPLACE_FPRINTF=0; - REPLACE_FPURGE=0; - REPLACE_FREOPEN=0; - REPLACE_FSEEK=0; - REPLACE_FSEEKO=0; - REPLACE_FTELL=0; - REPLACE_FTELLO=0; - REPLACE_GETDELIM=0; - REPLACE_GETLINE=0; - REPLACE_OBSTACK_PRINTF=0; - REPLACE_PERROR=0; - REPLACE_POPEN=0; - REPLACE_PRINTF=0; - REPLACE_REMOVE=0; - REPLACE_RENAME=0; - REPLACE_RENAMEAT=0; - REPLACE_SNPRINTF=0; - REPLACE_SPRINTF=0; - REPLACE_STDIO_READ_FUNCS=0; - REPLACE_STDIO_WRITE_FUNCS=0; - REPLACE_TMPFILE=0; - REPLACE_VASPRINTF=0; - REPLACE_VDPRINTF=0; - REPLACE_VFPRINTF=0; - REPLACE_VPRINTF=0; - REPLACE_VSNPRINTF=0; - REPLACE_VSPRINTF=0; - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 -$as_echo_n "checking for C/C++ restrict keyword... " >&6; } -if ${ac_cv_c_restrict+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -typedef int *int_ptr; - int foo (int_ptr $ac_kw ip) { return ip[0]; } - int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ - int bar (int ip[$ac_kw]) { return ip[0]; } - -int -main () -{ -int s[1]; - int *$ac_kw t = s; - t[0] = 0; - return foo (t) + bar (t); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_restrict=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_restrict" != no && break - done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 -$as_echo "$ac_cv_c_restrict" >&6; } - - case $ac_cv_c_restrict in - restrict) ;; - no) $as_echo "#define restrict /**/" >>confdefs.h - ;; - *) cat >>confdefs.h <<_ACEOF -#define restrict $ac_cv_c_restrict -_ACEOF - ;; - esac - - - GNULIB_EXPLICIT_BZERO=0; - GNULIB_FFSL=0; - GNULIB_FFSLL=0; - GNULIB_MEMCHR=0; - GNULIB_MEMMEM=0; - GNULIB_MEMPCPY=0; - GNULIB_MEMRCHR=0; - GNULIB_RAWMEMCHR=0; - GNULIB_STPCPY=0; - GNULIB_STPNCPY=0; - GNULIB_STRCHRNUL=0; - GNULIB_STRDUP=0; - GNULIB_STRNCAT=0; - GNULIB_STRNDUP=0; - GNULIB_STRNLEN=0; - GNULIB_STRPBRK=0; - GNULIB_STRSEP=0; - GNULIB_STRSTR=0; - GNULIB_STRCASESTR=0; - GNULIB_STRTOK_R=0; - GNULIB_MBSLEN=0; - GNULIB_MBSNLEN=0; - GNULIB_MBSCHR=0; - GNULIB_MBSRCHR=0; - GNULIB_MBSSTR=0; - GNULIB_MBSCASECMP=0; - GNULIB_MBSNCASECMP=0; - GNULIB_MBSPCASECMP=0; - GNULIB_MBSCASESTR=0; - GNULIB_MBSCSPN=0; - GNULIB_MBSPBRK=0; - GNULIB_MBSSPN=0; - GNULIB_MBSSEP=0; - GNULIB_MBSTOK_R=0; - GNULIB_STRERROR=0; - GNULIB_STRERROR_R=0; - GNULIB_STRSIGNAL=0; - GNULIB_STRVERSCMP=0; - HAVE_MBSLEN=0; - HAVE_EXPLICIT_BZERO=1; - HAVE_FFSL=1; - HAVE_FFSLL=1; - HAVE_MEMCHR=1; - HAVE_DECL_MEMMEM=1; - HAVE_MEMPCPY=1; - HAVE_DECL_MEMRCHR=1; - HAVE_RAWMEMCHR=1; - HAVE_STPCPY=1; - HAVE_STPNCPY=1; - HAVE_STRCHRNUL=1; - HAVE_DECL_STRDUP=1; - HAVE_DECL_STRNDUP=1; - HAVE_DECL_STRNLEN=1; - HAVE_STRPBRK=1; - HAVE_STRSEP=1; - HAVE_STRCASESTR=1; - HAVE_DECL_STRTOK_R=1; - HAVE_DECL_STRERROR_R=1; - HAVE_DECL_STRSIGNAL=1; - HAVE_STRVERSCMP=1; - REPLACE_MEMCHR=0; - REPLACE_MEMMEM=0; - REPLACE_STPNCPY=0; - REPLACE_STRCHRNUL=0; - REPLACE_STRDUP=0; - REPLACE_STRNCAT=0; - REPLACE_STRNDUP=0; - REPLACE_STRNLEN=0; - REPLACE_STRSTR=0; - REPLACE_STRCASESTR=0; - REPLACE_STRTOK_R=0; - REPLACE_STRERROR=0; - REPLACE_STRERROR_R=0; - REPLACE_STRSIGNAL=0; - UNDEFINE_STRTOK_R=0; - - - REPLACE_STRERROR_0=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror(0) succeeds" >&5 -$as_echo_n "checking whether strerror(0) succeeds... " >&6; } -if ${gl_cv_func_strerror_0_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - 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 - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -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; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_strerror_0_works=yes -else - gl_cv_func_strerror_0_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strerror_0_works" >&5 -$as_echo "$gl_cv_func_strerror_0_works" >&6; } - case "$gl_cv_func_strerror_0_works" in - *yes) ;; - *) - REPLACE_STRERROR_0=1 - -$as_echo "#define REPLACE_STRERROR_0 1" >>confdefs.h - - ;; - esac - - - - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_string_h='<'string.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_string_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'string.h' \ - | 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 - }' - - gl_cv_absolute_string_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_string_h - gl_cv_next_string_h='"'$gl_header'"' - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5 -$as_echo "$gl_cv_next_string_h" >&6; } - fi - NEXT_STRING_H=$gl_cv_next_string_h - - 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='<'string.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_string_h - fi - NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive - - - - - - - - - - - - - - WINDOWS_64_BIT_OFF_T=0 - - - - - -$as_echo "#define _USE_STD_STAT 1" >>confdefs.h - - - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_sys_types_h='<'sys/types.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_sys_types_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'sys/types.h' \ - | 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 - }' - - gl_cv_absolute_sys_types_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_sys_types_h - gl_cv_next_sys_types_h='"'$gl_header'"' - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5 -$as_echo "$gl_cv_next_sys_types_h" >&6; } - fi - NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h - - 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='<'sys/types.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_sys_types_h - fi - NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive - - - - - - - - - - - - - WINDOWS_STAT_INODES=0 - - - - - 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' - - - - case "$host_os" in - mingw*) REPLACE_ACCESS=1 ;; - esac - - if test $REPLACE_ACCESS = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS access.$ac_objext" - - fi - - - - - - GNULIB_ACCESS=1 - - - - - -$as_echo "#define GNULIB_TEST_ACCESS 1" >>confdefs.h - - - - - - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 -$as_echo_n "checking for alloca as a compiler built-in... " >&6; } -if ${gl_cv_rpl_alloca+:} false; then : - $as_echo_n "(cached) " >&6 -else - - 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 - gl_cv_rpl_alloca=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 -$as_echo "$gl_cv_rpl_alloca" >&6; } - if test $gl_cv_rpl_alloca = yes; then - -$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h - - ALLOCA_H=alloca.h - else - ALLOCA_H= - fi - else - ALLOCA_H=alloca.h - fi - - if test -n "$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 $ac_cv_working_alloca_h = yes; then - HAVE_ALLOCA_H=1 - else - HAVE_ALLOCA_H=0 - fi - - - - - - - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - REPLACE_CLOSE=1 - fi - - - - - - - if test $ac_cv_header_sys_socket_h != yes; then - for ac_header in winsock2.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" -if test "x$ac_cv_header_winsock2_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WINSOCK2_H 1 -_ACEOF - -fi - -done - - 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 - - - if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then - REPLACE_CLOSE=1 +{ 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 - - - if test $REPLACE_CLOSE = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS close.$ac_objext" - - fi - - - - - - GNULIB_CLOSE=1 - - - - - -$as_echo "#define GNULIB_TEST_CLOSE 1" >>confdefs.h - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5 -$as_echo_n "checking whether // is distinct from /... " >&6; } -if ${gl_cv_double_slash_root+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5 -$as_echo "$gl_cv_double_slash_root" >&6; } - if test "$gl_cv_double_slash_root" = yes; then - -$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h - - fi - - - - - - -$as_echo "#define HAVE_DUP2 1" >>confdefs.h - - - if test $HAVE_DUP2 = 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dup2 works" >&5 -$as_echo_n "checking whether dup2 works... " >&6; } -if ${gl_cv_func_dup2_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - 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 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #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 -main () -{ -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; - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_dup2_works=yes -else - gl_cv_func_dup2_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dup2_works" >&5 -$as_echo "$gl_cv_func_dup2_works" >&6; } - case "$gl_cv_func_dup2_works" in - *yes) ;; - *) - REPLACE_DUP2=1 - for ac_func in setdtablesize -do : - ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize" -if test "x$ac_cv_func_setdtablesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETDTABLESIZE 1 -_ACEOF - -fi -done - - ;; - esac - fi - - - if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS dup2.$ac_objext" - - - fi - - - - - - GNULIB_DUP2=1 - - - - - -$as_echo "#define GNULIB_TEST_DUP2 1" >>confdefs.h - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 -$as_echo_n "checking for error_at_line... " >&6; } -if ${ac_cv_lib_error_at_line+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -error_at_line (0, 0, "", 0, "an error occurred"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_error_at_line=yes -else - ac_cv_lib_error_at_line=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 -$as_echo "$ac_cv_lib_error_at_line" >&6; } - - if test $ac_cv_lib_error_at_line = no; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext" - - - - : - - fi - - - XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format" - - - - XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format" - - - - - - - - if test $ac_cv_func_fcntl = no; then - - - - if test $ac_cv_func_fcntl = no; then - HAVE_FCNTL=0 - else - REPLACE_FCNTL=1 - fi - - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fcntl handles F_DUPFD correctly" >&5 -$as_echo_n "checking whether fcntl handles F_DUPFD correctly... " >&6; } -if ${gl_cv_func_fcntl_f_dupfd_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - 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 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#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 -main () -{ -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; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_fcntl_f_dupfd_works=yes -else - gl_cv_func_fcntl_f_dupfd_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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_works" >&5 -$as_echo "$gl_cv_func_fcntl_f_dupfd_works" >&6; } - case $gl_cv_func_fcntl_f_dupfd_works in - *yes) ;; - *) - - - if test $ac_cv_func_fcntl = no; then - HAVE_FCNTL=0 - else - REPLACE_FCNTL=1 - fi - - -$as_echo "#define FCNTL_DUPFD_BUGGY 1" >>confdefs.h - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fcntl understands F_DUPFD_CLOEXEC" >&5 -$as_echo_n "checking whether fcntl understands F_DUPFD_CLOEXEC... " >&6; } -if ${gl_cv_func_fcntl_f_dupfd_cloexec+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifndef F_DUPFD_CLOEXEC -choke me -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#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 - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_func_fcntl_f_dupfd_cloexec=yes -else - gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + $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 - gl_cv_func_fcntl_f_dupfd_cloexec=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_path_EGREP=$EGREP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_cloexec" >&5 -$as_echo "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; } - if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then - - - - if test $ac_cv_func_fcntl = no; then - HAVE_FCNTL=0 - else - REPLACE_FCNTL=1 - fi - fi - 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" - if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then + { 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* - gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext" +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 - - - - - GNULIB_FCNTL=1 - - - - - -$as_echo "#define GNULIB_TEST_FCNTL 1" >>confdefs.h - - - - - - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_fcntl_h='<'fcntl.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_fcntl_h+:} false; then : - $as_echo_n "(cached) " >&6 + 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 - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; +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 - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'fcntl.h' \ - | 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 - }' - - gl_cv_absolute_fcntl_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_fcntl_h - gl_cv_next_fcntl_h='"'$gl_header'"' - + 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_fcntl_h" >&5 -$as_echo "$gl_cv_next_fcntl_h" >&6; } - fi - NEXT_FCNTL_H=$gl_cv_next_fcntl_h - - 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='<'fcntl.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_fcntl_h - fi - NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive - +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 +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi +if test "$enable_largefile" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + 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 : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + 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) +{ - if test $ac_cv_func_getdtablesize = yes && - test $ac_cv_have_decl_getdtablesize = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getdtablesize works" >&5 -$as_echo_n "checking whether getdtablesize works... " >&6; } -if ${gl_cv_func_getdtablesize_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$host_os" in - vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;; - *) - if test "$cross_compiling" = yes; then : - 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 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#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) +{ -else + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in #( + unknown) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do 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) +{ - #include + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +#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 () +main (void) { -int size = getdtablesize(); - if (dup2 (0, getdtablesize()) != -1) - return 1; - if (size != getdtablesize()) - return 2; ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_func_getdtablesize_works=yes -else - gl_cv_func_getdtablesize_works=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; #( + 64) : - ;; - esac - + # Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getdtablesize_works" >&5 -$as_echo "$gl_cv_func_getdtablesize_works" >&6; } - case "$gl_cv_func_getdtablesize_works" in - *yes | "no (limitation)") ;; - *) REPLACE_GETDTABLESIZE=1 ;; - esac - else - HAVE_GETDTABLESIZE=0 - fi - if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then + if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else $as_nop + gl_cv_type_time_t_y2038=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_time_t_y2038" >&5 +printf "%s\n" "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + #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]; +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else $as_nop + gl_cv_type_time_t_bits_macro=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_time_t_bits_macro" >&5 +printf "%s\n" "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext" +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h - : + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +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 $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf "%s\n" "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +fi + ;; #( + *) : + ;; +esac +fi + + case "$host_os" in + mingw*) +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + ;; + esac - GNULIB_GETDTABLESIZE=1 + # Pre-early section. -$as_echo "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h + # Code from module alloca: + # Code from module alloca-opt: + # 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 stdbool: -# 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 - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 -$as_echo_n "checking for elf_begin in -lelf... " >&6; } -if ${ac_cv_lib_elf_elf_begin+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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. */ -#ifdef __cplusplus -extern "C" -#endif -char elf_begin (); -int -main () -{ -return elf_begin (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_elf_elf_begin=yes -else - ac_cv_lib_elf_elf_begin=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 -$as_echo "$ac_cv_lib_elf_elf_begin" >&6; } -if test "x$ac_cv_lib_elf_elf_begin" = xyes; then : - LIBS="-lelf $LIBS" + # 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 -$as_echo_n "checking for kvm_open in -lkvm... " >&6; } -if ${ac_cv_lib_kvm_kvm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkvm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + 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_ -/* 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 kvm_open (); -int -main () -{ -return kvm_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kvm_kvm_open=yes -else - ac_cv_lib_kvm_kvm_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 -$as_echo "$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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 -$as_echo_n "checking for getloadavg in -lutil... " >&6; } -if ${ac_cv_lib_util_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +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 : -/* 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 getloadavg (); -int -main () -{ -return getloadavg (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_util_getloadavg=yes -else - ac_cv_lib_util_getloadavg=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 -$as_echo "$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 +else $as_nop - fi +printf "%s\n" "#define size_t unsigned int" >>confdefs.h - 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 - LIBS="-L/usr/local/lib $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 -$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; } -if ${ac_cv_lib_getloadavg_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgetloadavg $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +fi -/* 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 getloadavg (); +# 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 () +main (void) { -return getloadavg (); +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_getloadavg_getloadavg=yes -else - ac_cv_lib_getloadavg_getloadavg=no +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 \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 -$as_echo "$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 - LIBS=$gl_getloadavg_LIBS 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 - fi +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h - # Set up the replacement function if necessary. - if test $gl_func_getloadavg_done = no; then - HAVE_GETLOADAVG=0 +fi - # Solaris has libkstat which does not require root. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 -$as_echo_n "checking for kstat_open in -lkstat... " >&6; } -if ${ac_cv_lib_kstat_kstat_open+:} false; then : - $as_echo_n "(cached) " >&6 +{ 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 - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + 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. */ -#ifdef __cplusplus +#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 -char kstat_open (); + int -main () +main (void) { -return kstat_open (); +char *p = (char *) alloca (1); + if (p) return 0; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kstat_kstat_open=yes -else - ac_cv_lib_kstat_kstat_open=no +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 \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 -$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; } -if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBKSTAT 1 -_ACEOF - - LIBS="-lkstat $LIBS" - +{ 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 - test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes +if test $ac_cv_func_alloca_works = yes; then - # AIX has libperfstat which does not require root - if test $gl_func_getloadavg_done = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 -$as_echo_n "checking for perfstat_cpu_total in -lperfstat... " >&6; } -if ${ac_cv_lib_perfstat_perfstat_cpu_total+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lperfstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +printf "%s\n" "#define HAVE_ALLOCA 1" >>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. */ -#ifdef __cplusplus -extern "C" -#endif -char perfstat_cpu_total (); -int -main () -{ -return perfstat_cpu_total (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_perfstat_perfstat_cpu_total=yes else - ac_cv_lib_perfstat_perfstat_cpu_total=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 -$as_echo "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } -if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPERFSTAT 1 -_ACEOF + # 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. - 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_mongrel "$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 -$as_echo "#define DGUX 1" >>confdefs.h +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 -$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; } -if ${ac_cv_lib_dgc_dg_sys_info+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldgc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + +{ 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; +} -/* 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 dg_sys_info (); int -main () +main (int argc, char **argv) { -return dg_sys_info (); - ; - return 0; + return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dgc_dg_sys_info=yes -else - ac_cv_lib_dgc_dg_sys_info=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else $as_nop + ac_cv_c_stack_direction=-1 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 -$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; } -if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDGC 1 -_ACEOF - - LIBS="-ldgc $LIBS" - +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 - 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 + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : +else $as_nop -# Test whether the system declares getloadavg. Solaris has the function -# but declares it in , not . -for ac_header in sys/loadavg.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_loadavg_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_LOADAVG_H 1 -_ACEOF +printf "%s\n" "#define eaccess access" >>confdefs.h fi -done -if test $ac_cv_header_sys_loadavg_h = yes; then - HAVE_SYS_LOADAVG_H=1 -else - HAVE_SYS_LOADAVG_H=0 -fi -ac_fn_c_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 -" -if test "x$ac_cv_have_decl_getloadavg" = xyes; then : -else - HAVE_DECL_GETLOADAVG=0 -fi + HAVE_DECL_GETLOADAVG=1; - if test $HAVE_GETLOADAVG = 0; then @@ -11165,1095 +7179,1599 @@ fi - gl_LIBOBJS="$gl_LIBOBJS getloadavg.$ac_objext" + GL_GNULIB_GETLOADAVG=0 -# Figure out what our getloadavg.c needs. +{ 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 : -# 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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_PSTAT_GETDYNAMIC 1 +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 - gl_func_getloadavg_done=yes +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 -done - + 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 -# 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 -$as_echo "#define SVR4 1" >>confdefs.h + + 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* -if test $gl_func_getloadavg_done = no; then - ac_fn_c_check_header_mongrel "$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 -$as_echo "#define UMAX 1" >>confdefs.h -$as_echo "#define UMAX4_3 1" >>confdefs.h -fi + { 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 + ;; -fi + 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 -if test $gl_func_getloadavg_done = no; then - ac_fn_c_check_header_mongrel "$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; $as_echo "#define UMAX 1" >>confdefs.h +_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 + ;; -fi + 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 -if test $gl_func_getloadavg_done = no; then - for ac_header in mach/mach.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_mach_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACH_MACH_H 1 _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 - -done +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 + ;; -for ac_header in nlist.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" -if test "x$ac_cv_header_nlist_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NLIST_H 1 -_ACEOF - 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 : + 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 -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1 _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 + ;; - cat confdefs.h - <<_ACEOF >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. */ -#include -int -main () -{ -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 : +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif -$as_echo "#define N_NAME_POINTER 1" >>confdefs.h +_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$ac_exeext conftest.$ac_ext - +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 - - fi - - - - - - GNULIB_GETLOADAVG=1 - - - - - -$as_echo "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h - - - - - + 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 - ac_found=0 - ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include -" -if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi +_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 -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl _ACEOF -if test $ac_have_decl = 1; then : - ac_found=1 +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 - ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include -" -if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 +else $as_nop + gl_cv_host_cpu_c_abi=powerpc fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - ac_found=1 -fi + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; - ac_fn_c_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include -" -if test "x$ac_cv_have_decl___argv" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 + 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 -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL___ARGV $ac_have_decl _ACEOF -if test $ac_have_decl = 1; then : - ac_found=1 +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else $as_nop + main_abi=ilp32 fi - - - # 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __progname is defined in default libraries" >&5 -$as_echo_n "checking whether __progname is defined in default libraries... " >&6; } -if ${gl_cv_var___progname+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_cv_var___progname= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +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. */ -extern char *__progname; -int -main () -{ -return *__progname; +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif - ; - return 0; -} _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_var___progname=yes +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$ac_exeext conftest.$ac_ext - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var___progname" >&5 -$as_echo "$gl_cv_var___progname" >&6; } - if test "$gl_cv_var___progname" = yes; then - -$as_echo "#define HAVE_VAR___PROGNAME 1" >>confdefs.h - - fi - 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}" + ;; - # Check the system to see if it provides GNU glob. If not, use our - # local version. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 -$as_echo_n "checking if system libc has GNU glob... " >&6; } -if ${make_cv_sys_gnu_glob+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + 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 - #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 _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gnu glob" >/dev/null 2>&1; then : - make_cv_sys_gnu_glob=yes -else - make_cv_sys_gnu_glob=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 -$as_echo "$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= +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 + ;; - # Tell build.sh which to use - USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" - - - - - if test $gl_cv_func_malloc_posix = yes; then - -$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h - - else - REPLACE_MALLOC=1 - fi + 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 - if test $REPLACE_MALLOC = 1; then +_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 - GNULIB_MALLOC_POSIX=1 +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 +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : -$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h +printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + enum { e = false, f = true, g = false * true, h = true * 256 }; + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-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 p = true; + bool *pp = &p; - gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext" +int +main (void) +{ - fi + bool ps = &s; + *pp |= p; + *pp |= ! p; - if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else $as_nop + ac_cv_header_stdbool_h=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_header_stdbool_h" >&5 +printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } + { 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_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext" + 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 -cat >>confdefs.h <<_ACEOF -#define GNULIB_MSVC_NOTHROW 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 -$as_echo_n "checking for ssize_t... " >&6; } -if ${gt_cv_ssize_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -int x = sizeof (ssize_t *) + sizeof (ssize_t); - return !x; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_ssize_t=yes + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' else - gt_cv_ssize_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 -$as_echo "$gt_cv_ssize_t" >&6; } - if test $gt_cv_ssize_t = no; then -$as_echo "#define ssize_t int" >>confdefs.h + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' - fi - 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 - if test -n "$STDBOOL_H"; then - GL_GENERATE_STDBOOL_H_TRUE= - GL_GENERATE_STDBOOL_H_FALSE='#' -else - GL_GENERATE_STDBOOL_H_TRUE='#' - GL_GENERATE_STDBOOL_H_FALSE= -fi - if test "$ac_cv_type__Bool" = yes; then - HAVE__BOOL=1 - else - HAVE__BOOL=0 - fi + gl_source_base='lib' + gl_source_base_prefix= + + if test $ac_cv_func_alloca_works = no; then + : + fi - STDDEF_H= + # 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5 -$as_echo_n "checking for good max_align_t... " >&6; } -if ${gl_cv_type_max_align_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#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 -int -main () -{ +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif - ; - return 0; -} _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_type_max_align_t=yes -else - gl_cv_type_max_align_t=no +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 -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -rf conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5 -$as_echo "$gl_cv_type_max_align_t" >&6; } - 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 +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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 -$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } -if ${gl_cv_decl_null_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - int test[2 * (sizeof NULL == sizeof (void *)) -1]; +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h -int -main () -{ + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_decl_null_works=yes -else - gl_cv_decl_null_works=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 -$as_echo "$gl_cv_decl_null_works" >&6; } - if test $gl_cv_decl_null_works = no; then - REPLACE_NULL=1 - STDDEF_H=stddef.h + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 fi - if test -n "$STDDEF_H"; then - GL_GENERATE_STDDEF_H_TRUE= - GL_GENERATE_STDDEF_H_FALSE='#' -else - GL_GENERATE_STDDEF_H_TRUE='#' - GL_GENERATE_STDDEF_H_FALSE= -fi - if test -n "$STDDEF_H"; then + 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 - if test $gl_cv_have_include_next = yes; then - gl_cv_next_stddef_h='<'stddef.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_stddef_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'stddef.h' \ - | 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 - }' - gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - gl_header=$gl_cv_absolute_stddef_h - gl_cv_next_stddef_h='"'$gl_header'"' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 -$as_echo "$gl_cv_next_stddef_h" >&6; } - fi - NEXT_STDDEF_H=$gl_cv_next_stddef_h - 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='<'stddef.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_stddef_h - fi - NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive - fi +# Persuade glibc to declare getloadavg(). + +gl_save_LIBS=$LIBS - $as_echo "#define __USE_MINGW_ANSI_STDIO 1" >>confdefs.h +# 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. */ - if test $gl_cv_have_include_next = yes; then - gl_cv_next_stdio_h='<'stdio.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_stdio_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +/* 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 - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + # 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. */ -#include + +/* 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 - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac +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 - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'stdio.h' \ - | 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 - }' + LIBS="-lkstat $LIBS" - gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` +fi - gl_header=$gl_cv_absolute_stdio_h - gl_cv_next_stdio_h='"'$gl_header'"' + 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5 -$as_echo "$gl_cv_next_stdio_h" >&6; } - fi - NEXT_STDIO_H=$gl_cv_next_stdio_h +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 - 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='<'stdio.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_stdio_h - fi - NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which flavor of printf attribute matches inttypes macros" >&5 -$as_echo_n "checking which flavor of printf attribute matches inttypes macros... " >&6; } -if ${gl_cv_func_printf_attribute_flavor+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { 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. */ - #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 - +/* 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 () +main (void) { - +return dg_sys_info (); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_func_printf_attribute_flavor=system -else - gl_cv_func_printf_attribute_flavor=gnu +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.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_attribute_flavor" >&5 -$as_echo "$gl_cv_func_printf_attribute_flavor" >&6; } - if test "$gl_cv_func_printf_attribute_flavor" = gnu; then - -$as_echo "#define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1" >>confdefs.h - - fi - - GNULIB_FSCANF=1 - - -cat >>confdefs.h <<_ACEOF -#define GNULIB_FSCANF 1 -_ACEOF - - - GNULIB_SCANF=1 - - -cat >>confdefs.h <<_ACEOF -#define GNULIB_SCANF 1 -_ACEOF - - - GNULIB_FGETC=1 - GNULIB_GETC=1 - GNULIB_GETCHAR=1 - GNULIB_FGETS=1 - GNULIB_FREAD=1 - - - 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 - - - - - - - - - - - - - - - - - - if test $gl_cv_have_include_next = yes; then - gl_cv_next_stdlib_h='<'stdlib.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_stdlib_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' - ;; - esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'stdlib.h' \ - | 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 - }' - - gl_cv_absolute_stdlib_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` +{ 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 - gl_header=$gl_cv_absolute_stdlib_h - gl_cv_next_stdlib_h='"'$gl_header'"' + LIBS="-ldgc $LIBS" +fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5 -$as_echo "$gl_cv_next_stdlib_h" >&6; } - fi - NEXT_STDLIB_H=$gl_cv_next_stdlib_h - 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='<'stdlib.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_stdlib_h fi - NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive - - - - - - - + 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 - for ac_func in stpcpy -do : - ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" -if test "x$ac_cv_func_stpcpy" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STPCPY 1 -_ACEOF + 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 -done - - if test $ac_cv_func_stpcpy = no; then - HAVE_STPCPY=0 +: + 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 $HAVE_STPCPY = 0; then - - - + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : +# Figure out what our getloadavg.c needs. - gl_LIBOBJS="$gl_LIBOBJS stpcpy.$ac_objext" +# 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 - 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 - GNULIB_STPCPY=1 +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 -$as_echo "#define GNULIB_TEST_STPCPY 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 - if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5 -$as_echo_n "checking for working strerror function... " >&6; } -if ${gl_cv_func_working_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - 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 +fi -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - +#include int -main () +main (void) { -if (!*strerror (-2)) return 1; +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_run "$LINENO"; then : - gl_cv_func_working_strerror=yes -else - gl_cv_func_working_strerror=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi +if ac_fn_c_try_link "$LINENO" +then : +printf "%s\n" "#define N_NAME_POINTER 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5 -$as_echo "$gl_cv_func_working_strerror" >&6; } - case "$gl_cv_func_working_strerror" in - *yes) ;; - *) - REPLACE_STRERROR=1 - ;; - esac - - else - REPLACE_STRERROR=1 - fi - - if test $REPLACE_STRERROR = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext" - - fi - - -cat >>confdefs.h <<_ACEOF -#define GNULIB_STRERROR 1 -_ACEOF - - - - - - - - GNULIB_STRERROR=1 +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +done +fi -$as_echo "#define GNULIB_TEST_STRERROR 1" >>confdefs.h - if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then + GL_GNULIB_GETLOADAVG=1 +printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS strerror-override.$ac_objext" + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - if test $ac_cv_header_sys_socket_h != yes; then - for ac_header in winsock2.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" -if test "x$ac_cv_header_winsock2_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WINSOCK2_H 1 + #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 _ACEOF - +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no fi +rm -rf conftest* -done - - 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 - - - fi - +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 + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi - if test $gl_cv_have_include_next = yes; then - gl_cv_next_unistd_h='<'unistd.h'>' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 -$as_echo_n "checking absolute name of ... " >&6; } -if ${gl_cv_next_unistd_h+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi - if test $ac_cv_header_unistd_h = yes; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF - case "$host_os" in - aix*) gl_absname_cpp="$ac_cpp -C" ;; - *) gl_absname_cpp="$ac_cpp" ;; - esac - case "$host_os" in - mingw*) - gl_dirsep_regex='[/\\]' - ;; - *) - gl_dirsep_regex='\/' + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; esac - gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' - gl_header_literal_regex=`echo 'unistd.h' \ - | 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 - }' - - gl_cv_absolute_unistd_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | - sed -n "$gl_absolute_header_sed"` - - gl_header=$gl_cv_absolute_unistd_h - gl_cv_next_unistd_h='"'$gl_header'"' - else - gl_cv_next_unistd_h='<'unistd.h'>' - fi + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5 -$as_echo "$gl_cv_next_unistd_h" >&6; } - fi - NEXT_UNISTD_H=$gl_cv_next_unistd_h - - 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='<'unistd.h'>' - else - # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' - gl_next_as_first_directive=$gl_cv_next_unistd_h - fi - NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive - - - - - if test $ac_cv_header_unistd_h = yes; then - HAVE_UNISTD_H=1 - else - HAVE_UNISTD_H=0 +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' fi @@ -12261,11 +8779,6 @@ $as_echo "$gl_cv_next_unistd_h" >&6; } - - - - - : # End of code from modules @@ -12287,7 +8800,11 @@ $as_echo "$gl_cv_next_unistd_h" >&6; } + + + 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 @@ -12300,6 +8817,9 @@ $as_echo "$gl_cv_next_unistd_h" >&6; } + + + LIBGNU_LIBDEPS="$gl_libdeps" LIBGNU_LTLIBDEPS="$gl_ltlibdeps" @@ -12310,11 +8830,12 @@ $as_echo "$gl_cv_next_unistd_h" >&6; } 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -12322,11 +8843,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12337,11 +8862,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -12350,11 +8875,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -12362,11 +8888,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12377,11 +8907,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -12389,8 +8919,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -12404,40 +8934,36 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ 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 ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + 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. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # 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. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -12449,10 +8975,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -12462,7 +8989,8 @@ 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 : +if $ac_preproc_ok +then : break fi @@ -12474,29 +9002,24 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } +{ 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. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # 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. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -12508,10 +9031,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -12521,11 +9045,12 @@ 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 : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +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 @@ -12538,11 +9063,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -12550,11 +9076,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12566,22 +9096,23 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -12589,11 +9120,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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 as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PERL="perl" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -12605,80 +9140,23 @@ fi fi PERL=$ac_cv_prog_PERL if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Specialized system macros - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - 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. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -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$ac_exeext - if ${ac_cv_search_strerror+:} false; then : - break -fi -done -if ${ac_cv_search_strerror+:} false; then : - -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$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 - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 @@ -12689,7 +9167,8 @@ else typedef int dummy; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +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. @@ -12713,7 +9192,7 @@ if ac_fn_c_try_compile "$LINENO"; then : fi done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +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 @@ -12722,7 +9201,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -12734,7 +9213,8 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +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. */ @@ -12742,7 +9222,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -12752,14 +9232,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +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). @@ -12768,7 +9249,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros @@ -12778,14 +9259,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +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 () +main (void) { #ifndef _BIG_ENDIAN not big endian @@ -12795,31 +9277,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +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 : + 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. */ -short int ascii_mm[] = +unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = + unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } - short int ebcdic_ii[] = + unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = + unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; @@ -12827,14 +9311,15 @@ short int ascii_mm[] = extern int foo; int -main () +main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -12847,13 +9332,13 @@ if ac_fn_c_try_compile "$LINENO"; then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else +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 () +main (void) { /* Are we little or big endian? From Harbison&Steele. */ @@ -12869,9 +9354,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_bigendian=no -else +else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -12880,17 +9366,17 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } +{ 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) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) @@ -12901,11 +9387,12 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h # Enable gettext, in "external" mode. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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" @@ -12919,10 +9406,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + 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" + 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 @@ -12931,13 +9423,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "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 @@ -12965,23 +9457,24 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } + { 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+set}" = set; then : +if test ${enable_nls+y} +then : enableval=$enable_nls; USE_NLS=$enableval -else +else $as_nop USE_NLS=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } @@ -13020,11 +9513,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -13052,20 +9546,21 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -13075,11 +9570,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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 @@ -13092,11 +9591,11 @@ esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -13142,11 +9641,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -13174,11 +9674,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f messages.po @@ -13219,11 +9719,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -13250,11 +9751,11 @@ esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -13286,9 +9787,10 @@ fi # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi @@ -13308,8 +9810,8 @@ fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { 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 @@ -13338,15 +9840,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; } ;; esac elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +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 @@ -13375,18 +9878,19 @@ fi LD="$acl_cv_path_LD" if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 &1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + + { 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 @@ -13417,8 +9923,8 @@ else acl_cv_rpath=done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } +{ 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" @@ -13429,9 +9935,10 @@ $as_echo "$acl_cv_rpath" >&6; } 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+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; : -else +else $as_nop enable_rpath=yes fi @@ -13442,11 +9949,12 @@ fi acl_libdirstem2= case "$host_os" in solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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. */ @@ -13456,17 +9964,18 @@ sixtyfour bits _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : + $EGREP "sixtyfour bits" >/dev/null 2>&1 +then : gl_cv_solaris_64bit=yes -else +else $as_nop gl_cv_solaris_64bit=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } +{ 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 @@ -13525,7 +10034,8 @@ $as_echo "$gl_cv_solaris_64bit" >&6; } # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : +if test ${with_libiconv_prefix+y} +then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -13989,72 +10499,76 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ 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 -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 () +main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyCurrent=yes -else +else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } +{ 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 -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= @@ -14099,11 +10613,12 @@ typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; gt_expression_test_code= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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. */ @@ -14113,7 +10628,7 @@ extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int -main () +main (void) { bindtextdomain ("", ""); @@ -14123,17 +10638,18 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libc=yes" -else +else $as_nop eval "$gt_func_gnugettext_libc=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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 @@ -14166,11 +10682,12 @@ $as_echo "$ac_res" >&6; } done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 @@ -14181,7 +10698,7 @@ else #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -14190,10 +10707,11 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +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" @@ -14205,7 +10723,7 @@ rm -f core conftest.err conftest.$ac_objext \ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -14214,24 +10732,26 @@ iconv_t cd = iconv_open("",""); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +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 \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } +{ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 @@ -14239,12 +10759,13 @@ else fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : + 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 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -14256,7 +10777,7 @@ else #endif int -main () +main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful @@ -14356,7 +10877,8 @@ int result = 0; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +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 \ @@ -14368,8 +10890,8 @@ fi LIBS="$am_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } +{ 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 ;; @@ -14379,14 +10901,14 @@ $as_echo "$am_cv_func_iconv_works" >&6; } fi if test "$am_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } + { 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= @@ -14418,7 +10940,8 @@ $as_echo "$LIBICONV" >&6; } # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : +if test ${with_libintl_prefix+y} +then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -14857,11 +11380,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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" @@ -14879,7 +11403,7 @@ extern const char *_nl_expand_alias (const char *); int -main () +main (void) { bindtextdomain ("", ""); @@ -14889,12 +11413,13 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libintl=yes" -else +else $as_nop eval "$gt_func_gnugettext_libintl=no" fi -rm -f core conftest.err conftest.$ac_objext \ +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" @@ -14911,7 +11436,7 @@ extern const char *_nl_expand_alias (const char *); int -main () +main (void) { bindtextdomain ("", ""); @@ -14921,21 +11446,22 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +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 \ +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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { 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"; } \ @@ -14962,20 +11488,20 @@ $as_echo "$ac_res" >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then -$as_echo "#define ENABLE_NLS 1" >>confdefs.h +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } + { 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" @@ -14985,18 +11511,18 @@ $as_echo_n "checking where the gettext function comes from... " >&6; } else gt_source="included intl directory" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + { 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= @@ -15012,247 +11538,44 @@ $as_echo "$LIBINTL" >&6; } if test "X$x" = "X$element"; then haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h - - -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - - -# 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. -# Check whether --enable-largefile was given. -if test "${enable_largefile+set}" = set; then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -if ${ac_cv_sys_largefile_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - 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 () -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -$as_echo "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if ${ac_cv_sys_file_offset_bits+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - 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 () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _FILE_OFFSET_BITS 64 -#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 () -{ + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -if ${ac_cv_sys_large_files+:} false; then : - $as_echo_n "(cached) " >&6 -else - while :; do - 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 () -{ + fi - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _LARGE_FILES 1 -#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 () -{ - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -$as_echo "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF -;; -esac -rm -rf conftest* +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po fi -fi + + INTLLIBS="$LIBINTL" + + + + + # Checks for libraries. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 -$as_echo_n "checking for library containing getpwnam... " >&6; } -if ${ac_cv_search_getpwnam+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. */ @@ -15260,179 +11583,128 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 getpwnam (); +char strerror (); int -main () +main (void) { -return getpwnam (); +return strerror (); ; return 0; } _ACEOF -for ac_lib in '' sun; do +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_getpwnam=$ac_res + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_strerror=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_getpwnam+:} false; then : + if test ${ac_cv_search_strerror+y} +then : break fi done -if ${ac_cv_search_getpwnam+:} false; then : +if test ${ac_cv_search_strerror+y} +then : -else - ac_cv_search_getpwnam=no +else $as_nop + ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 -$as_echo "$ac_cv_search_getpwnam" >&6; } -ac_res=$ac_cv_search_getpwnam -if test "$ac_res" != no; then : +{ 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 - -# Checks for header files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +{ 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. */ -#include -#include -#include -#include +/* 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 () +main (void) { - +return getpwnam (); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no +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 conftest* - +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 : -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no +else $as_nop + ac_cv_search_getpwnam=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +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 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else + 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 () +main (void) { if ((DIR *) 0) return 0; @@ -15440,19 +11712,21 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_ac_Header=yes" -else +else $as_nop eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + { 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 `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -15461,11 +11735,12 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -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. */ @@ -15473,56 +11748,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' dir; do +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 : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ 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 : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -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. */ @@ -15530,57 +11808,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' x; do +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 : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ 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 : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 -$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } -if ${ac_cv_header_stat_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -15603,83 +11884,121 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_header_stat_broken=no -else +else $as_nop ac_cv_header_stat_broken=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 -$as_echo "$ac_cv_header_stat_broken" >&6; } +{ 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 -$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no +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 -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then +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 -$as_echo "#define TIME_WITH_SYS_TIME 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" "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 -for ac_header in 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 -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +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" "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 -done +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else +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" "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 () +main (void) { #ifndef __cplusplus @@ -15692,7 +12011,7 @@ main () /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. + /* 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 */ @@ -15720,7 +12039,7 @@ main () iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* 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; @@ -15736,134 +12055,128 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void +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.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } +{ 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 -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF +printf "%s\n" "#define const /**/" >>confdefs.h +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + $EGREP "uid_t" >/dev/null 2>&1 +then : ac_cv_type_uid_t=yes -else +else $as_nop ac_cv_type_uid_t=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } +{ 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 -$as_echo "#define uid_t int" >>confdefs.h +printf "%s\n" "#define uid_t int" >>confdefs.h -$as_echo "#define gid_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 + 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; +} -cat >>confdefs.h <<_ACEOF -#define pid_t int _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 : +if test "x$ac_cv_type_off_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF +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 : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +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 : +if test "x$ac_cv_type_ssize_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define ssize_t int -_ACEOF +printf "%s\n" "#define ssize_t int" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 @@ -15884,7 +12197,7 @@ else ? 1 : -1)]; int i = 63; int -main () +main (void) { /* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; @@ -15898,38 +12211,137 @@ main () } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : -else +else $as_nop ac_cv_type_unsigned_long_long_int=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } +{ 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 -$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h +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 : +if test "x$ac_cv_type_uintmax_t" = xyes +then : -$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h -else +else $as_nop test $ac_cv_type_unsigned_long_long_int = yes \ && ac_type='unsigned long long int' \ || ac_type='unsigned long int' -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF +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 @@ -15937,11 +12349,12 @@ fi # Find out whether our struct stat returns nanosecond resolution timestamps. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 -$as_echo_n "checking for nanoseconds field of struct stat... " >&6; } -if ${ac_cv_struct_st_mtim_nsec+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -15959,40 +12372,41 @@ else #include int -main () +main (void) { struct stat s; s.ST_MTIM_NSEC; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +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.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CPPFLAGS="$ac_save_CPPFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 -$as_echo "$ac_cv_struct_st_mtim_nsec" >&6; } +{ 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 -cat >>confdefs.h <<_ACEOF -#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec -_ACEOF +printf "%s\n" "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 -$as_echo_n "checking whether to use high resolution file timestamps... " >&6; } -if ${make_cv_file_timestamp_hi_res+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + if test "$ac_cv_struct_st_mtim_nsec" != no +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16000,41 +12414,43 @@ else # include #endif int -main () +main (void) { char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +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.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 -$as_echo "$make_cv_file_timestamp_hi_res" >&6; } -if test "$make_cv_file_timestamp_hi_res" = yes; then : +{ 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 +else $as_nop val=0 fi -cat >>confdefs.h <<_ACEOF -#define FILE_TIMESTAMP_HI_RES $val -_ACEOF +printf "%s\n" "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h -if test "$make_cv_file_timestamp_hi_res" = yes; then : +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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -$as_echo_n "checking for library containing clock_gettime... " >&6; } -if ${ac_cv_search_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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. */ @@ -16042,113 +12458,76 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 clock_gettime (); int -main () +main (void) { return clock_gettime (); ; return 0; } _ACEOF -for ac_lib in '' rt posix4; do +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 : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_clock_gettime=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_clock_gettime+:} false; then : + if test ${ac_cv_search_clock_gettime+y} +then : break fi done -if ${ac_cv_search_clock_gettime+:} false; then : +if test ${ac_cv_search_clock_gettime+y} +then : -else +else $as_nop ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -$as_echo "$ac_cv_search_clock_gettime" >&6; } +{ 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 : +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 : - -$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h - - -fi - -fi - -# Check for DOS-style pathnames. - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 -$as_echo_n "checking whether system uses MSDOS-style paths... " >&6; } -if ${ac_cv_dos_paths+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + if test "$ac_cv_search_clock_gettime" != no +then : -#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__ -neither MSDOS nor Windows nor OS2 -#endif +printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h -int -main () -{ - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_dos_paths=yes -else - ac_cv_dos_paths=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 -$as_echo "$ac_cv_dos_paths" >&6; } - - if test x"$ac_cv_dos_paths" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_DOS_PATHS 1 -_ACEOF fi - # See if we have a standard version of gettimeofday(). Since actual # implementations can differ, just make sure we have the most common # one. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 -$as_echo_n "checking for standard gettimeofday... " >&6; } -if ${ac_cv_func_gettimeofday+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + if test "$cross_compiling" = yes +then : ac_cv_func_gettimeofday="no (cross-compiling)" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -16159,9 +12538,10 @@ else || t.tv_sec < 0 || t.tv_usec < 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_gettimeofday=yes -else +else $as_nop ac_cv_func_gettimeofday=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -16169,88 +12549,288 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 -$as_echo "$ac_cv_func_gettimeofday" >&6; } -if test "$ac_cv_func_gettimeofday" = yes; then : +{ 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 : -$as_echo "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h fi -for ac_func in strdup strndup memrchr umask mkstemp mktemp fdopen \ - dup dup2 getcwd realpath sigsetmask sigaction \ - getgroups seteuid setegid setlinebuf setreuid setregid \ - getrlimit setrlimit setvbuf pipe strsignal \ - lstat readlink atexit isatty ttyname pselect posix_spawn \ - posix_spawnattr_setsigmask -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +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 -done # 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_c_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +ac_fn_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 #include -" -if test "x$ac_cv_have_decl_bsd_signal" = xyes; then : +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_BSD_SIGNAL $ac_have_decl -_ACEOF - - -for ac_header in vfork.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" -if test "x$ac_cv_header_vfork_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_VFORK_H 1 -_ACEOF -fi +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 -for ac_func in fork vfork -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF -fi -done if test "x$ac_cv_func_fork" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 -$as_echo_n "checking for working fork... " >&6; } -if ${ac_cv_func_fork_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; 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 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* By Ruediger Kuhlmann. */ @@ -16260,9 +12840,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_fork_works=yes -else +else $as_nop ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -16270,8 +12851,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 -$as_echo "$ac_cv_func_fork_works" >&6; } +{ 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 @@ -16286,27 +12867,37 @@ if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_fork_works=yes ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 -$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 -$as_echo_n "checking for working vfork... " >&6; } -if ${ac_cv_func_vfork_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; 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 +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 @@ -16314,11 +12905,7 @@ $ac_includes_default static variable whose address is put into a register that is clobbered by the vfork. */ static void -#ifdef __cplusplus sparc_address_test (int arg) -# else -sparc_address_test (arg) int arg; -#endif { static pid_t child; if (!child) { @@ -16336,13 +12923,18 @@ sparc_address_test (arg) int arg; } int -main () +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) { @@ -16364,6 +12956,10 @@ main () || 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 @@ -16379,6 +12975,9 @@ main () /* 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 @@ -16391,9 +12990,10 @@ main () } } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_vfork_works=yes -else +else $as_nop ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -16401,70 +13001,94 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 -$as_echo "$ac_cv_func_vfork_works" >&6; } +{ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 -$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} + { 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 -$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h +printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h else -$as_echo "#define vfork fork" >>confdefs.h +printf "%s\n" "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then -$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h +printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h fi -if ${ac_cv_func_setvbuf_reversed+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_func_setvbuf_reversed=no +# 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 -# 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. -for ac_func in strcasecmp strncasecmp strcmpi strncmpi stricmp strnicmp -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +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 -done # strcoll() is used by the GNU glob library -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 -$as_echo_n "checking for working strcoll... " >&6; } -if ${ac_cv_func_strcoll_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_strcoll_works=no -else +{ 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 () +main (void) { return (strcoll ("abc", "def") >= 0 || strcoll ("ABC", "DEF") >= 0 || @@ -16473,9 +13097,10 @@ return (strcoll ("abc", "def") >= 0 || return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_strcoll_works=yes -else +else $as_nop ac_cv_func_strcoll_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -16483,53 +13108,48 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 -$as_echo "$ac_cv_func_strcoll_works" >&6; } +{ 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 -$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 -$as_echo_n "checking whether closedir returns void... " >&6; } -if ${ac_cv_func_closedir_void+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_closedir_void=yes -else +{ 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. */ -$ac_includes_default + #include <$ac_header_dirent> -#ifndef __cplusplus -int closedir (); -#endif int -main () +main (void) { -return closedir (opendir (".")) != 0; + + return closedir(0); + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_func_closedir_void=no -else +else $as_nop ac_cv_func_closedir_void=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 -$as_echo "$ac_cv_func_closedir_void" >&6; } +{ 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 -$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h +printf "%s\n" "#define CLOSEDIR_VOID 1" >>confdefs.h fi @@ -16555,11 +13175,10 @@ fi #endif " -if test "x$ac_cv_member_struct_dirent_d_type" = xyes; then : +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_DIRENT_D_TYPE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h fi @@ -16569,7 +13188,8 @@ fi # See if the user wants to add (or not) GNU Guile support # Check whether --with-guile was given. -if test "${with_guile+set}" = set; then : +if test ${with_guile+y} +then : withval=$with_guile; fi @@ -16587,11 +13207,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -16601,11 +13222,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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 @@ -16617,11 +13242,11 @@ esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -16630,11 +13255,12 @@ 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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. @@ -16644,11 +13270,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + 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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + 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 @@ -16660,11 +13290,11 @@ esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -16672,8 +13302,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ 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 @@ -16685,50 +13315,52 @@ fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 : +if test "x$with_guile" != xno +then : guile_versions="3.0 2.2 2.0 1.8" guile_version=no have_guile=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 -$as_echo_n "checking for GNU Guile... " >&6; } + { 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" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + { { 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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 -$as_echo "$guile_version" >&6; } - if test "$have_guile" = yes; then : + { 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 -$as_echo_n "checking for GUILE... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 +printf %s "checking for GUILE... " >&6; } if test -n "$GUILE_CFLAGS"; then pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + { { 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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 @@ -16742,10 +13374,10 @@ if test -n "$GUILE_LIBS"; then pkg_cv_GUILE_LIBS="$GUILE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + { { 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=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + 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 @@ -16759,8 +13391,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { 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 @@ -16786,10 +13418,10 @@ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { 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. @@ -16803,26 +13435,66 @@ See \`config.log' for more details" "$LINENO" 5; } else GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS GUILE_LIBS=$pkg_cv_GUILE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi - # 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_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 : +if test "x$ac_cv_header_libguile_h" = xyes +then : -$as_echo "#define HAVE_GUILE 1" >>confdefs.h +printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h -else +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 @@ -16837,97 +13509,88 @@ else fi -ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +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 -" -if test "x$ac_cv_have_decl_sys_siglist" = xyes; then : +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_SYS_SIGLIST $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +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 -" -if test "x$ac_cv_have_decl__sys_siglist" = xyes; then : +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SYS_SIGLIST $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +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 -" -if test "x$ac_cv_have_decl___sys_siglist" = xyes; then : +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL___SYS_SIGLIST $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h # Check out the wait reality. -for ac_header in sys/wait.h -do : - ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_WAIT_H 1 -_ACEOF +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi -done +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 -for ac_func in waitpid wait3 -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +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 -done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 -$as_echo_n "checking for union wait... " >&6; } -if ${make_cv_union_wait+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { union wait status; int pid; pid = wait (&status); #ifdef WEXITSTATUS @@ -16949,29 +13612,32 @@ union wait status; int pid; pid = wait (&status); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : make_cv_union_wait=yes -else +else $as_nop make_cv_union_wait=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 -$as_echo "$make_cv_union_wait" >&6; } -if test "$make_cv_union_wait" = yes; then : +{ 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 : -$as_echo "#define HAVE_UNION_WAIT 1" >>confdefs.h +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 : +if test "$PATH_SEPARATOR" = ';' +then : -$as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h fi @@ -16981,7 +13647,8 @@ fi use_customs=false # Check whether --with-customs was given. -if test "${with_customs+set}" = set; then : +if test ${with_customs+y} +then : withval=$with_customs; case $withval in #( n|no) : : ;; #( @@ -16996,32 +13663,34 @@ if test "${with_customs+set}" = set; then : esac cf_test_netlibs=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 -$as_echo_n "checking for network libraries... " >&6; } -if ${cf_cv_netlibs+:} false; then : - $as_echo_n "(cached) " >&6 -else - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: working..." >&5 -$as_echo "working..." >&6; } +{ 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 + + 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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTNAME 1 -_ACEOF +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 -$as_echo_n "checking for gethostname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostname+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17030,52 +13699,50 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gethostname (); int -main () +main (void) { return gethostname (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_nsl_gethostname=yes -else +else $as_nop ac_cv_lib_nsl_gethostname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostname" >&6; } -if test "x$ac_cv_lib_nsl_gethostname" = xyes; then : +{ 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]'` -cat >>confdefs.h <<_ACEOF -#define HAVE_$cf_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h ac_cv_func_gethostname=yes cf_cv_netlibs="-lnsl $cf_cv_netlibs" -else +else $as_nop ac_cv_func_gethostname=unknown unset ac_cv_func_gethostname 2>/dev/null -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 -$as_echo_n "checking for gethostname in -lsocket... " >&6; } -if ${ac_cv_lib_socket_gethostname+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17084,42 +13751,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gethostname (); int -main () +main (void) { return gethostname (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_gethostname=yes -else +else $as_nop ac_cv_lib_socket_gethostname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 -$as_echo "$ac_cv_lib_socket_gethostname" >&6; } -if test "x$ac_cv_lib_socket_gethostname" = xyes; then : +{ 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]'` -cat >>confdefs.h <<_ACEOF -#define HAVE_$cf_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h ac_cv_func_gethostname=yes cf_cv_netlibs="-lsocket $cf_cv_netlibs" -else +else $as_nop ac_cv_func_gethostname=unknown unset ac_cv_func_gethostname 2>/dev/null @@ -17131,16 +13795,17 @@ fi fi -done +done # # FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but # I don't know the entrypoints - 97/7/22 TD -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 -$as_echo_n "checking for main in -linet... " >&6; } -if ${ac_cv_lib_inet_main+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17148,46 +13813,49 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { return main (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_inet_main=yes -else +else $as_nop ac_cv_lib_inet_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 -$as_echo "$ac_cv_lib_inet_main" >&6; } -if test "x$ac_cv_lib_inet_main" = xyes; then : +{ 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 + + 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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_SOCKET 1 -_ACEOF +if test "x$ac_cv_func_socket" = xyes +then : + printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 -$as_echo_n "checking for socket in -lsocket... " >&6; } -if ${ac_cv_lib_socket_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17196,52 +13864,50 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 socket (); int -main () +main (void) { return socket (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_socket=yes -else +else $as_nop ac_cv_lib_socket_socket=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 -$as_echo "$ac_cv_lib_socket_socket" >&6; } -if test "x$ac_cv_lib_socket_socket" = xyes; then : +{ 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]'` -cat >>confdefs.h <<_ACEOF -#define HAVE_$cf_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h ac_cv_func_socket=yes cf_cv_netlibs="-lsocket $cf_cv_netlibs" -else +else $as_nop ac_cv_func_socket=unknown unset ac_cv_func_socket 2>/dev/null -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 -$as_echo_n "checking for socket in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17250,42 +13916,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 socket (); int -main () +main (void) { return socket (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_bsd_socket=yes -else +else $as_nop ac_cv_lib_bsd_socket=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 -$as_echo "$ac_cv_lib_bsd_socket" >&6; } -if test "x$ac_cv_lib_bsd_socket" = xyes; then : +{ 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]'` -cat >>confdefs.h <<_ACEOF -#define HAVE_$cf_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h ac_cv_func_socket=yes cf_cv_netlibs="-lbsd $cf_cv_netlibs" -else +else $as_nop ac_cv_func_socket=unknown unset ac_cv_func_socket 2>/dev/null @@ -17297,26 +13960,27 @@ fi fi -done +done fi # -for ac_func in gethostbyname + + 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 : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTBYNAME 1 -_ACEOF +if test "x$ac_cv_func_gethostbyname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h -else +else $as_nop -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 @@ -17325,42 +13989,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gethostbyname (); int -main () +main (void) { return gethostbyname (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_nsl_gethostbyname=yes -else +else $as_nop ac_cv_lib_nsl_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : +{ 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]'` -cat >>confdefs.h <<_ACEOF -#define HAVE_$cf_tr_func 1 -_ACEOF +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h ac_cv_func_gethostbyname=yes cf_cv_netlibs="-lnsl $cf_cv_netlibs" -else +else $as_nop ac_cv_func_gethostbyname=unknown unset ac_cv_func_gethostbyname 2>/dev/null @@ -17369,25 +14030,25 @@ fi fi -done +done fi LIBS="$LIBS $cf_cv_netlibs" test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 - ac_fn_c_check_header_mongrel "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default" -if test "x$ac_cv_header_customs_h" = xyes; then : + 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 +else $as_nop with_customs=no CPPFLAGS="$make_cppflags" make_badcust=yes fi - ;; esac @@ -17407,9 +14068,11 @@ 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+set}" = set; then : - enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes; then : - $as_echo "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h +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 @@ -17417,49 +14080,54 @@ 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+set}" = set; then : +if test ${enable_job_server+y} +then : enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" -else +else $as_nop make_cv_job_server="yes" fi -if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no; then : +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : has_wait_nohang=no -else +else $as_nop has_wait_nohang=yes fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 -$as_echo_n "checking for SA_RESTART... " >&6; } -if ${make_cv_sa_restart+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 () +main (void) { return SA_RESTART; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : make_cv_sa_restart=yes -else +else $as_nop make_cv_sa_restart=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 -$as_echo "$make_cv_sa_restart" >&6; } +{ 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 : +if test "$make_cv_sa_restart" != no +then : -$as_echo "#define HAVE_SA_RESTART 1" >>confdefs.h +printf "%s\n" "#define HAVE_SA_RESTART 1" >>confdefs.h fi @@ -17486,51 +14154,46 @@ case /$make_cv_job_server/$user_job_server/ in #( : no jobserver ;; #( *) : -$as_echo "#define MAKE_JOBSERVER 1" >>confdefs.h +printf "%s\n" "#define MAKE_JOBSERVER 1" >>confdefs.h ;; esac # If dl*() functions are supported we can enable the load operation -ac_fn_c_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include -" -if test "x$ac_cv_have_decl_dlopen" = xyes; then : +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 +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_DLOPEN $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include -" -if test "x$ac_cv_have_decl_dlsym" = xyes; then : +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 +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_DLSYM $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include -" -if test "x$ac_cv_have_decl_dlerror" = xyes; then : +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 +else $as_nop ac_have_decl=0 fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_DLERROR $ac_have_decl -_ACEOF +printf "%s\n" "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h # Check whether --enable-load was given. -if test "${enable_load+set}" = set; then : +if test ${enable_load+y} +then : enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" -else +else $as_nop make_cv_load="yes" fi @@ -17543,13 +14206,15 @@ case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ i esac # We might need -ldl -if test "$make_cv_load" = yes; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +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. */ @@ -17557,49 +14222,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' dl; do +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 : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else +else $as_nop ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ 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 : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -else +else $as_nop make_cv_load= fi @@ -17611,7 +14278,7 @@ case /$make_cv_load/$user_load/ in #( make_cv_load=no ;; #( *) : -$as_echo "#define MAKE_LOAD 1" >>confdefs.h +printf "%s\n" "#define MAKE_LOAD 1" >>confdefs.h ;; esac @@ -17620,45 +14287,48 @@ esac # 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 : +if test "$make_cv_load" = yes +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 -$as_echo_n "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + { 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 : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +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_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 -$as_echo_n "checking If the linker accepts -rdynamic... " >&6; } +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 : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +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_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +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 \ +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 \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$old_LDFLAGS" @@ -17666,9 +14336,10 @@ 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 : +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : -$as_echo "#define MAKE_SYMLINKS 1" >>confdefs.h +printf "%s\n" "#define MAKE_SYMLINKS 1" >>confdefs.h fi @@ -17676,9 +14347,10 @@ 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+set}" = set; then : +if test ${enable_posix_spawn+y} +then : enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" -else +else $as_nop make_cv_posix_spawn="yes" fi @@ -17690,44 +14362,44 @@ case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( ;; esac -if test "$make_cv_posix_spawn" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 -$as_echo_n "checking for posix_spawn that fails synchronously... " >&6; } -if ${make_cv_synchronous_posix_spawn+:} false; then : - $as_echo_n "(cached) " >&6 -else +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 : + if test "$cross_compiling" = yes +then : make_cv_synchronous_posix_spawn="no (cross-compiling)" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #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; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - make_cv_synchronous_posix_spawn=no -else +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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 -$as_echo "$make_cv_synchronous_posix_spawn" >&6; } +{ 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 #( @@ -17735,56 +14407,60 @@ case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ i make_cv_posix_spawn=no ;; #( *) : -$as_echo "#define USE_POSIX_SPAWN 1" >>confdefs.h +printf "%s\n" "#define USE_POSIX_SPAWN 1" >>confdefs.h ;; esac # Find the SCCS commands, so we can include them in our default rules. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 -$as_echo_n "checking for location of SCCS get command... " >&6; } -if ${make_cv_path_sccs_get+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ 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 : + if test -f /usr/sccs/get +then : make_cv_path_sccs_get=/usr/sccs/get -else +else $as_nop make_cv_path_sccs_get=get fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 -$as_echo "$make_cv_path_sccs_get" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf "%s\n" "$make_cv_path_sccs_get" >&6; } -cat >>confdefs.h <<_ACEOF -#define SCCS_GET "$make_cv_path_sccs_get" -_ACEOF +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 : + test -f s.conftest +then : # We successfully created an SCCS file. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 -$as_echo_n "checking if SCCS get command understands -G... " >&6; } -if ${make_cv_sys_get_minus_G+:} false; then : - $as_echo_n "(cached) " >&6 -else + { 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 : + test -f conftoast +then : make_cv_sys_get_minus_G=yes -else +else $as_nop make_cv_sys_get_minus_G=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 -$as_echo "$make_cv_sys_get_minus_G" >&6; } - if test "$make_cv_sys_get_minus_G" = yes; then : +{ 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 : -$as_echo "#define SCCS_GET_MINUS_G 1" >>confdefs.h +printf "%s\n" "#define SCCS_GET_MINUS_G 1" >>confdefs.h fi @@ -17795,9 +14471,7 @@ rm -f s.conftest conftoast # Let the makefile know what our build host is -cat >>confdefs.h <<_ACEOF -#define MAKE_HOST "$host" -_ACEOF +printf "%s\n" "#define MAKE_HOST \"$host\"" >>confdefs.h MAKE_HOST="$host" @@ -17824,10 +14498,10 @@ fi w32_target_env=yes -$as_echo "#define WINDOWS32 1" >>confdefs.h +printf "%s\n" "#define WINDOWS32 1" >>confdefs.h -$as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h ;; #( *) : @@ -17835,41 +14509,51 @@ $as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h esac -cat >>confdefs.h <<_ACEOF -#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR' -_ACEOF +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 : +if test -r "$srcdir/maintMakefile" +then : MAINT_MAKEFILE="$srcdir/maintMakefile" fi # Allow building with dmalloc -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 -$as_echo_n "checking if malloc debugging is wanted... " >&6; } +{ 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+set}" = set; then : +if test ${with_dmalloc+y} +then : withval=$with_dmalloc; if test "$withval" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } -$as_echo "#define WITH_DMALLOC 1" >>confdefs.h +printf "%s\n" "#define WITH_DMALLOC 1" >>confdefs.h LIBS="$LIBS -ldmalloc" LDFLAGS="$LDFLAGS -g" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -17880,7 +14564,8 @@ SET_MAKE= # Sanity check and inform the user of what we found -if test "x$make_badcust" = xyes; then : +if test "x$make_badcust" = xyes +then : echo echo "WARNING: --with-customs specified but no customs.h could be found;" @@ -17893,9 +14578,10 @@ case $with_customs in #( ""|n|no|y|ye|yes) : : ;; #( *) : - if test -f "$with_customs/lib/libcustoms.a"; then : + if test -f "$with_customs/lib/libcustoms.a" +then : : -else +else $as_nop echo echo "WARNING: '$with_customs/lib' does not appear to contain the" echo " Customs library. You must build and install Customs" @@ -17905,7 +14591,8 @@ else fi ;; esac -if test "x$has_wait_nohang" = xno; then : +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." @@ -17915,7 +14602,8 @@ if test "x$has_wait_nohang" = xno; then : fi -if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes; then : +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" @@ -17926,7 +14614,8 @@ if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes; then : fi -if test "x$make_cv_load" = xno && test "x$user_load" = xyes; then : +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." @@ -17936,19 +14625,35 @@ if test "x$make_cv_load" = xno && test "x$user_load" = xyes; then : fi -if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes; then : +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 Makefile build.cfg lib/Makefile po/Makefile.in doc/Makefile tests/config-flags.pm" +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 @@ -17978,8 +14683,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_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) ;; #( @@ -18009,15 +14714,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { 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 @@ -18031,8 +14736,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { 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 @@ -18049,7 +14754,7 @@ 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=`$as_echo "$ac_i" | sed "$ac_script"` + 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" @@ -18060,14 +14765,14 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { 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='#' @@ -18092,69 +14797,63 @@ 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 "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_ALLOCA_H\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" 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 -if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_STDBOOL_H\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then - as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" 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 @@ -18173,13 +14872,17 @@ 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" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ 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 @@ -18202,14 +14905,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +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 +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -18219,46 +14924,46 @@ 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 -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +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 test "${PATH_SEPARATOR+set}" != set; then +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 || @@ -18267,13 +14972,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -18282,8 +14980,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + 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 @@ -18295,30 +14997,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -18331,13 +15013,14 @@ 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 - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + 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. @@ -18364,18 +15047,20 @@ 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 : +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 +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -18387,12 +15072,13 @@ fi # as_fn_append # 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 : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -18423,7 +15109,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -18445,6 +15131,10 @@ 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*) @@ -18458,6 +15148,12 @@ case `echo -n x` in #((((( 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 @@ -18499,7 +15195,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -18508,7 +15204,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -18570,8 +15266,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # 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.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -18597,6 +15293,7 @@ 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 @@ -18627,22 +15324,27 @@ $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: ." +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="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -GNU make config.status 4.3 -configured by $0, generated by GNU Autoconf 2.69, +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +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." @@ -18682,15 +15384,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + 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=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -18698,7 +15400,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -18707,7 +15409,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -18735,7 +15437,7 @@ 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 - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -18749,7 +15451,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -18777,12 +15479,13 @@ do "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "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" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "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 @@ -18794,9 +15497,10 @@ done # 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+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + 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 @@ -19127,7 +15831,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_HEADERS" -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" shift for ac_tag do @@ -19166,7 +15870,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; 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 @@ -19174,17 +15878,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { 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=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -19201,7 +15905,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -19225,9 +15929,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + 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/ ;; @@ -19289,8 +15993,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { 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=' @@ -19339,9 +16043,9 @@ 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"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { 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 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +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" @@ -19357,20 +16061,20 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { 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 - $as_echo "/* $configure_input */" \ + 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 @@ -19390,7 +16094,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -19409,9 +16113,40 @@ $as_echo X"$_am_arg" | } 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" - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + # 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 @@ -19437,7 +16172,7 @@ esac 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/:.*$//'` + 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 @@ -19449,7 +16184,7 @@ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -19471,7 +16206,7 @@ $as_echo X"$am_mf" | $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -19496,10 +16231,12 @@ $as_echo X/"$am_mf" | (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { 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. Try re-running configure with the + 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; } @@ -19659,8 +16396,9 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { 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 cd49a2c..9f68897 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-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 @@ -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],[bug-make@gnu.org]) AC_PREREQ([2.69]) @@ -31,7 +31,7 @@ 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. @@ -51,42 +51,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 \ + memory.h sys/param.h sys/resource.h sys/timeb.h sys/time.h \ sys/select.h sys/file.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 +109,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 +129,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 +144,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,15 +175,35 @@ 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=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" ]) ]) @@ -251,8 +260,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 +283,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"]) @@ -320,8 +326,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"]) @@ -371,8 +376,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 +388,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 +445,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 @@ -520,12 +528,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 doc/Makefile \ - 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/doc/Makefile.am b/doc/Makefile.am index 7bcf1c2..18d577b 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ # -*-Makefile-*-, or close enough -# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# Copyright (C) 2000-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 @@ -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 . TEXI2HTML = texi2html TEXI2HTML_FLAGS = -split_chapter diff --git a/doc/Makefile.in b/doc/Makefile.in index fcabd94..415f521 100644 --- a/doc/Makefile.in +++ b/doc/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, @@ -15,7 +15,7 @@ @SET_MAKE@ # -*-Makefile-*-, or close enough -# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# Copyright (C) 2000-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 @@ -29,7 +29,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 . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ @@ -107,37 +107,21 @@ host_triplet = @host@ subdir = doc 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/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/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -246,23 +230,19 @@ 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@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -270,349 +250,23 @@ 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@ @@ -627,7 +281,6 @@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIMITS_H = @LIMITS_H@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ @@ -637,26 +290,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@ @@ -671,136 +304,16 @@ 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@ @@ -826,8 +339,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@ @@ -1065,7 +580,6 @@ ctags CTAGS: cscope cscopelist: - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/doc/fdl.texi b/doc/fdl.texi index 542edaa..eaf3da0 100644 --- a/doc/fdl.texi +++ b/doc/fdl.texi @@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -@uref{https://www.gnu.org/copyleft/}. +@uref{https://www.gnu.org/licenses/}. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this diff --git a/doc/make-stds.texi b/doc/make-stds.texi index d37b244..b0745a8 100644 --- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -549,15 +549,15 @@ should normally be @file{/usr/local/include}, but write it as Most compilers other than GCC do not look for header files in directory @file{/usr/local/include}. So installing the header files this way is -only useful with GCC. Sometimes this is not a problem because some -libraries are only really intended to work with GCC. But some libraries +only useful with GCC@. Sometimes this is not a problem because some +libraries are only really intended to work with GCC@. But some libraries are intended to work with other compilers. They should install their header files in two places, one specified by @code{includedir} and one specified by @code{oldincludedir}. @item oldincludedir The directory for installing @samp{#include} header files for use with -compilers other than GCC. This should normally be @file{/usr/include}. +compilers other than GCC@. This should normally be @file{/usr/include}. (If you are using Autoconf, you can write it as @samp{@@oldincludedir@@}.) The Makefile commands should check whether the value of diff --git a/doc/make.1 b/doc/make.1 index dbd023f..0fd0104 100644 --- a/doc/make.1 +++ b/doc/make.1 @@ -1,4 +1,4 @@ -.TH MAKE 1 "28 February 2016" "GNU" "User Commands" +.TH MAKE 1 "31 May 2022" "GNU" "User Commands" .SH NAME make \- GNU make utility to maintain groups of programs .SH SYNOPSIS @@ -26,9 +26,9 @@ To prepare to use .BR make , you must write a file called the .I makefile -that describes the relationships among files in your program, and the states -the commands for updating each file. In a program, typically the executable -file is updated from object files, which are in turn made by compiling source +that describes the relationships among files in your program, and provides +commands for updating each file. In a program, typically the executable file +is updated from object files, which are in turn made by compiling source files. .LP Once a suitable makefile exists, each time you change some source files, @@ -48,10 +48,10 @@ files, it issues the commands recorded in the makefile. .B make executes commands in the .I makefile -to update one or more target -.IR names , +to update one or more +.IR targets , where -.I name +.I target is typically a program. If no .B \-f @@ -130,21 +130,28 @@ are omitted, then the behavior is the same as if .B \-d was specified. .I FLAGS -may be -.I a +may be any or all of the following names, comma- or space-separated. Only the +first character is significant: the rest may be omitted: +.I all for all debugging output (same as using .BR \-d ), -.I b +.I basic for basic debugging, -.I v +.I verbose for more verbose basic debugging, -.I i -for showing implicit rules, -.I j -for details on invocation of commands, and -.I m -for debugging while remaking makefiles. Use -.I n +.I implicit +for showing implicit rule search operations, +.I jobs +for details on invocation of commands, +.I makefile +for debugging while remaking makefiles, +.I print +shows all recipes that are run even if they are silent, and +.I why +shows the reason +.BR make +decided to rebuild each target. Use +.I none to disable all previous debugging flags. .TP 0.5i \fB\-e\fR, \fB\-\-environment\-overrides\fR @@ -198,6 +205,16 @@ option is given without an argument, .BR make will not limit the number of jobs that can run simultaneously. .TP 0.5i +\fB\--jobserver-style=\fR\fIstyle\fR +The style of jobserver to use. The +.I style +may be one of +.BR fifo , +.BR pipe , +or +.B sem +(Windows only). +.TP 0.5i \fB\-k\fR, \fB\-\-keep\-going\fR Continue as much as possible after an error. While the target that failed, and those that depend on it, cannot @@ -312,6 +329,26 @@ Turn off .BR \-w , even if it was turned on implicitly. .TP 0.5i +.BI \-\-shuffle "[=MODE]" +Enable shuffling of goal and prerequisite ordering. +.I MODE +is one of +.I none +to disable shuffle mode, +.I random +to shuffle prerequisites in random order, +.I reverse +to consider prerequisites in reverse order, or an integer +.I +which enables +.I random +mode with a specific +.I seed +value. If +.I MODE +is omitted the default is +.IR random . +.TP 0.5i \fB\-W\fR \fIfile\fR, \fB\-\-what\-if\fR=\fIfile\fR, \fB\-\-new\-file\fR=\fIfile\fR, \fB\-\-assume\-new\fR=\fIfile\fR Pretend that the target .I file @@ -361,7 +398,7 @@ This manual page contributed by Dennis Morse of Stanford University. Further updates contributed by Mike Frysinger. It has been reworked by Roland McGrath. Maintained by Paul Smith. .SH "COPYRIGHT" -Copyright \(co 1992-1993, 1996-2020 Free Software Foundation, Inc. +Copyright \(co 1992-1993, 1996-2022 Free Software Foundation, Inc. This file is part of .IR "GNU make" . .LP @@ -376,4 +413,4 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details. .LP You should have received a copy of the GNU General Public License along with this program. If not, see -.IR http://www.gnu.org/licenses/ . +.IR https://www.gnu.org/licenses/ . diff --git a/doc/make.info b/doc/make.info index b84710f..2125e16 100644 --- a/doc/make.info +++ b/doc/make.info @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.6 from make.texi. +This is make.info, produced by makeinfo version 6.7 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make -Manual', for GNU 'make' version 4.3. + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free -Software Foundation, Inc. +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -30,178 +30,192 @@ END-INFO-DIR-ENTRY  Indirect: -make.info-1: 1379 -make.info-2: 301593 +make.info-1: 1391 +make.info-2: 302239 +make.info-3: 626899  Tag Table: (Indirect) -Node: Top1379 -Node: Overview16646 -Node: Preparing17659 -Node: Reading18627 -Node: Bugs19554 -Node: Introduction21383 -Node: Rule Introduction22976 -Node: Simple Makefile24909 -Node: How Make Works28645 -Node: Variables Simplify31294 -Node: make Deduces33500 -Node: Combine By Prerequisite35233 -Node: Cleanup36262 -Node: Makefiles37680 -Node: Makefile Contents38575 -Node: Splitting Lines41748 -Node: Makefile Names44231 -Node: Include45838 -Ref: Include-Footnote-149582 -Node: MAKEFILES Variable49716 -Node: Remaking Makefiles51257 -Node: Overriding Makefiles55587 -Node: Reading Makefiles57615 -Node: Parsing Makefiles61057 -Node: Secondary Expansion62915 -Node: Rules70363 -Node: Rule Example73036 -Node: Rule Syntax73884 -Node: Prerequisite Types76479 -Node: Wildcards79346 -Node: Wildcard Examples81065 -Node: Wildcard Pitfall82415 -Node: Wildcard Function84204 -Node: Directory Search85988 -Node: General Search87123 -Node: Selective Search88830 -Node: Search Algorithm91820 -Node: Recipes/Search94338 -Node: Implicit/Search95661 -Node: Libraries/Search96603 -Node: Phony Targets98574 -Node: Force Targets103411 -Node: Empty Targets104448 -Node: Special Targets105750 -Node: Multiple Targets113550 -Node: Multiple Rules117783 -Node: Static Pattern120001 -Node: Static Usage120653 -Node: Static versus Implicit124372 -Node: Double-Colon126112 -Node: Automatic Prerequisites127872 -Node: Recipes132133 -Node: Recipe Syntax133305 -Node: Splitting Recipe Lines135420 -Node: Variables in Recipes138573 -Node: Echoing139899 -Node: Execution141111 -Ref: Execution-Footnote-1142524 -Node: One Shell142669 -Node: Choosing the Shell145987 -Node: Parallel150131 -Node: Parallel Output152800 -Node: Parallel Input157227 -Node: Errors158346 -Node: Interrupts161981 -Node: Recursion164342 -Node: MAKE Variable166439 -Node: Variables/Recursion168682 -Node: Options/Recursion174127 -Node: -w Option180133 -Node: Canned Recipes181128 -Node: Empty Recipes184111 -Node: Using Variables185551 -Node: Reference188979 -Node: Flavors190789 -Node: Advanced196768 -Node: Substitution Refs197273 -Node: Computed Names198875 -Node: Values203423 -Node: Setting204340 -Node: Appending207379 -Node: Override Directive211350 -Node: Multi-Line212977 -Node: Undefine Directive215840 -Node: Environment216929 -Node: Target-specific219181 -Node: Pattern-specific222208 -Node: Suppressing Inheritance224055 -Node: Special Variables225508 -Node: Conditionals233749 -Node: Conditional Example234462 -Node: Conditional Syntax237025 -Node: Testing Flags242785 -Node: Functions243886 -Node: Syntax of Functions245446 -Node: Text Functions247780 -Node: File Name Functions256341 -Node: Conditional Functions261567 -Node: Foreach Function263943 -Node: File Function267156 -Node: Call Function269713 -Node: Value Function272598 -Node: Eval Function274035 -Node: Origin Function276311 -Node: Flavor Function279537 -Node: Make Control Functions280581 -Node: Shell Function282267 -Node: Guile Function284026 -Node: Running284776 -Node: Makefile Arguments286757 -Node: Goals287473 -Node: Instead of Execution292212 -Node: Avoiding Compilation295927 -Node: Overriding297902 -Node: Testing301593 -Node: Options Summary303477 -Node: Implicit Rules315181 -Node: Using Implicit317318 -Node: Catalogue of Rules320837 -Node: Implicit Variables330181 -Node: Chained Rules335254 -Node: Pattern Rules339475 -Node: Pattern Intro341009 -Node: Pattern Examples343160 -Node: Automatic Variables344967 -Node: Pattern Match352342 -Node: Match-Anything Rules355665 -Node: Canceling Rules359586 -Node: Last Resort360300 -Node: Suffix Rules362129 -Node: Implicit Rule Search365863 -Node: Archives369414 -Node: Archive Members370119 -Node: Archive Update371729 -Node: Archive Symbols373640 -Node: Archive Pitfalls374873 -Node: Archive Suffix Rules375595 -Node: Extending make377143 -Node: Guile Integration378288 -Node: Guile Types379516 -Node: Guile Interface381936 -Node: Guile Example383222 -Node: Loading Objects385413 -Node: load Directive386903 -Node: Remaking Loaded Objects389657 -Node: Loaded Object API390291 -Node: Loaded Object Example397053 -Node: Integrating make399300 -Node: Job Slots400051 -Node: POSIX Jobserver403483 -Node: Windows Jobserver405951 -Node: Terminal Output407304 -Node: Features409693 -Node: Missing418862 -Node: Makefile Conventions422590 -Node: Makefile Basics423569 -Node: Utilities in Makefiles426736 -Node: Command Variables429235 -Node: DESTDIR432475 -Node: Directory Variables434642 -Node: Standard Targets449999 -Node: Install Command Categories464105 -Node: Quick Reference468631 -Node: Error Messages481345 -Node: Complex Makefile490140 -Node: GNU Free Documentation License498758 -Node: Concept Index523916 -Node: Name Index596081 +Node: Top1391 +Node: Overview17167 +Node: Preparing18180 +Node: Reading19148 +Node: Bugs20075 +Node: Introduction22025 +Node: Rule Introduction23618 +Node: Simple Makefile25551 +Node: How Make Works29287 +Node: Variables Simplify31977 +Node: make Deduces34183 +Node: Combine By Prerequisite35916 +Node: Cleanup36945 +Node: Makefiles38363 +Node: Makefile Contents39258 +Node: Splitting Lines42431 +Node: Makefile Names44920 +Node: Include46527 +Ref: Include-Footnote-150706 +Node: MAKEFILES Variable50840 +Node: Remaking Makefiles52381 +Node: Overriding Makefiles57285 +Node: Reading Makefiles59313 +Node: Parsing Makefiles63097 +Node: Secondary Expansion64955 +Node: Rules72330 +Node: Rule Example74917 +Node: Rule Syntax75765 +Node: Prerequisite Types78360 +Node: Wildcards81399 +Ref: Wildcards-Footnote-183432 +Node: Wildcard Examples83522 +Node: Wildcard Pitfall84872 +Node: Wildcard Function86661 +Node: Directory Search88716 +Node: General Search89851 +Node: Selective Search91558 +Node: Search Algorithm94548 +Node: Recipes/Search97066 +Node: Implicit/Search98389 +Node: Libraries/Search99331 +Node: Phony Targets101302 +Node: Force Targets106894 +Node: Empty Targets107931 +Node: Special Targets109233 +Node: Multiple Targets118577 +Node: Multiple Rules122919 +Node: Static Pattern125137 +Node: Static Usage125789 +Node: Static versus Implicit129508 +Node: Double-Colon131248 +Node: Automatic Prerequisites133008 +Node: Recipes137269 +Node: Recipe Syntax138441 +Node: Splitting Recipe Lines140556 +Node: Variables in Recipes143709 +Node: Echoing145035 +Node: Execution146247 +Ref: Execution-Footnote-1147660 +Node: One Shell147805 +Node: Choosing the Shell151123 +Node: Parallel155267 +Node: Parallel Disable157983 +Node: Parallel Output161414 +Node: Parallel Input165849 +Node: Errors166968 +Node: Interrupts170603 +Node: Recursion172964 +Node: MAKE Variable175061 +Node: Variables/Recursion177304 +Node: Options/Recursion183159 +Node: -w Option189605 +Node: Canned Recipes190600 +Node: Empty Recipes193583 +Node: Using Variables195023 +Node: Reference198599 +Node: Flavors200409 +Node: Recursive Assignment201154 +Node: Simple Assignment203028 +Node: Immediate Assignment206613 +Node: Conditional Assignment209096 +Node: Advanced209732 +Node: Substitution Refs210237 +Node: Computed Names211839 +Node: Values216206 +Node: Setting217281 +Node: Appending220547 +Node: Override Directive224103 +Node: Multi-Line225730 +Node: Undefine Directive228593 +Node: Environment229682 +Node: Target-specific231881 +Node: Pattern-specific235058 +Node: Suppressing Inheritance236905 +Node: Special Variables238358 +Node: Conditionals247482 +Node: Conditional Example248195 +Node: Conditional Syntax250758 +Node: Testing Flags256518 +Node: Functions257918 +Node: Syntax of Functions259527 +Node: Text Functions262112 +Node: File Name Functions270753 +Node: Conditional Functions275979 +Node: Let Function279821 +Node: Foreach Function282444 +Node: File Function285727 +Node: Call Function288284 +Node: Value Function291177 +Node: Eval Function292614 +Node: Origin Function294892 +Node: Flavor Function298118 +Node: Make Control Functions299162 +Node: Shell Function302239 +Node: Guile Function305227 +Node: Running305977 +Node: Makefile Arguments308030 +Node: Goals308746 +Node: Instead of Execution313494 +Node: Avoiding Compilation317209 +Node: Overriding319184 +Node: Testing321496 +Node: Temporary Files323380 +Node: Options Summary324489 +Node: Implicit Rules338769 +Node: Using Implicit340906 +Node: Catalogue of Rules344425 +Node: Implicit Variables353815 +Node: Chained Rules358888 +Node: Pattern Rules363703 +Node: Pattern Intro365237 +Node: Pattern Examples367966 +Node: Automatic Variables369773 +Node: Pattern Match377180 +Node: Match-Anything Rules380610 +Node: Canceling Rules384531 +Node: Last Resort385245 +Node: Suffix Rules387074 +Node: Implicit Rule Search390808 +Node: Archives394760 +Node: Archive Members395465 +Node: Archive Update397075 +Node: Archive Symbols398986 +Node: Archive Pitfalls400219 +Node: Archive Suffix Rules400941 +Node: Extending make402489 +Node: Guile Integration403634 +Node: Guile Types404862 +Node: Guile Interface407282 +Node: Guile Example408568 +Node: Loading Objects410759 +Node: load Directive412249 +Node: Remaking Loaded Objects415003 +Node: Loaded Object API415637 +Node: Loaded Object Example422522 +Node: Integrating make424894 +Node: Job Slots425645 +Node: POSIX Jobserver429021 +Node: Windows Jobserver432647 +Node: Terminal Output434059 +Node: Features436451 +Node: Missing445620 +Node: Makefile Conventions449348 +Node: Makefile Basics450327 +Node: Utilities in Makefiles453494 +Node: Command Variables455993 +Node: DESTDIR459233 +Node: Directory Variables461400 +Node: Standard Targets476759 +Node: Install Command Categories490865 +Node: Quick Reference495391 +Node: Error Messages508608 +Node: Complex Makefile517403 +Node: GNU Free Documentation License526021 +Node: Concept Index551179 +Node: Name Index626899  End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/doc/make.info-1 b/doc/make.info-1 index abd0357..521a80d 100644 --- a/doc/make.info-1 +++ b/doc/make.info-1 @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.6 from make.texi. +This is make.info, produced by makeinfo version 6.7 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make -Manual', for GNU 'make' version 4.3. + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free -Software Foundation, Inc. +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -38,13 +38,13 @@ This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make -Manual', for GNU 'make' version 4.3. + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free -Software Foundation, Inc. +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -196,6 +196,7 @@ Recipe Execution Parallel Execution +* Parallel Disable:: Disabling parallel execution * Parallel Output:: Handling output during parallel execution * Parallel Input:: Handling input during parallel execution @@ -230,6 +231,13 @@ How to Use Variables * Suppressing Inheritance:: Suppress inheritance of variables. * Special Variables:: Variables with special meaning or behavior. +The Two Flavors of Variables + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + Advanced Features for Reference to Variables * Substitution Refs:: Referencing a variable with @@ -248,6 +256,7 @@ Functions for Transforming Text * Text Functions:: General-purpose text manipulation functions. * File Name Functions:: Functions for manipulating file names. * Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. * Foreach Function:: Repeat some text with controlled variation. * File Function:: Write text to a file. * Call Function:: Expand a user-defined function. @@ -273,6 +282,7 @@ How to Run 'make' an alternate compiler and other things. * Testing:: How to proceed past some errors, to test compilation. +* Temporary Files:: Where 'make' keeps its temporary files. * Options Summary:: Summary of Options Using Implicit Rules @@ -449,7 +459,7 @@ Either send electronic mail to: or use our Web-based project management tool, at: - http://savannah.gnu.org/projects/make/ + https://savannah.gnu.org/projects/make/ In addition to the information above, please be careful to include the version number of 'make' you are using. You can get this information @@ -458,6 +468,9 @@ machine and operating system you are using. One way to obtain this information is by looking at the final lines of output from the command 'make --help'. + If you have a code change you'd like to submit, see the 'README' file +section "Submitting Patches" for information. +  File: make.info, Node: Introduction, Next: Makefiles, Prev: Overview, Up: Top @@ -632,11 +645,12 @@ File: make.info, Node: How Make Works, Next: Variables Simplify, Prev: Simple =================================== By default, 'make' starts with the first target (not targets whose names -start with '.'). This is called the "default goal". ("Goals" are the -targets that 'make' strives ultimately to update. You can override this -behavior using the command line (*note Arguments to Specify the Goals: -Goals.) or with the '.DEFAULT_GOAL' special variable (*note Other -Special Variables: Special Variables.). +start with '.' unless they also contain one or more '/'). This is +called the "default goal". ("Goals" are the targets that 'make' strives +ultimately to update. You can override this behavior using the command +line (*note Arguments to Specify the Goals: Goals.) or with the +'.DEFAULT_GOAL' special variable (*note Other Special Variables: Special +Variables.). In the simple example of the previous section, the default goal is to update the executable program 'edit'; therefore, we put that rule first. @@ -986,7 +1000,7 @@ Splitting Without Adding Whitespace If you need to split a line but do _not_ want any whitespace added, you can utilize a subtle trick: replace your backslash/newline pairs with -the three characters dollar sign/backslash/newline: +the three characters dollar sign, backslash, and newline: var := one$\ word @@ -1091,18 +1105,27 @@ makefile as has been traditionally done with other versions of 'make'. If the specified name does not start with a slash, and the file is not found in the current directory, several other directories are searched. First, any directories you have specified with the '-I' or -'--include-dir' option are searched (*note Summary of Options: Options +'--include-dir' options are searched (*note Summary of Options: Options Summary.). Then the following directories (if they exist) are searched, in this order: 'PREFIX/include' (normally '/usr/local/include' (1)) '/usr/gnu/include', '/usr/local/include', '/usr/include'. - If an included makefile cannot be found in any of these directories, -a warning message is generated, but it is not an immediately fatal -error; processing of the makefile containing the 'include' continues. -Once it has finished reading makefiles, 'make' will try to remake any -that are out of date or don't exist. *Note How Makefiles Are Remade: -Remaking Makefiles. Only after it has tried to find a way to remake a -makefile and failed, will 'make' diagnose the missing makefile as a + The '.INCLUDE_DIRS' variable will contain the current list of +directories that make will search for included files. *Note Other +Special Variables: Special Variables. + + You can avoid searching in these default directories by adding the +command line option '-I' with the special value '-' (e.g., '-I-') to the +command line. This will cause 'make' to forget any already-set include +directories, including the default directories. + + If an included makefile cannot be found in any of these directories +it is not an immediately fatal error; processing of the makefile +containing the 'include' continues. Once it has finished reading +makefiles, 'make' will try to remake any that are out of date or don't +exist. *Note How Makefiles Are Remade: Remaking Makefiles. Only after +it has failed to find a rule to remake the makefile, or it found a rule +but the recipe failed, will 'make' diagnose the missing makefile as a fatal error. If you want 'make' to simply ignore a makefile which does not exist @@ -1164,16 +1187,19 @@ files. If a makefile can be remade from other files, you probably want 'make' to get an up-to-date version of the makefile to read in. To this end, after reading in all makefiles 'make' will consider each -as a goal target and attempt to update it. If a makefile has a rule -which says how to update it (found either in that very makefile or in -another one) or if an implicit rule applies to it (*note Using Implicit -Rules: Implicit Rules.), it will be updated if necessary. After all -makefiles have been checked, if any have actually been changed, 'make' -starts with a clean slate and reads all the makefiles over again. (It -will also attempt to update each of them over again, but normally this -will not change them again, since they are already up to date.) Each -restart will cause the special variable 'MAKE_RESTARTS' to be updated -(*note Special Variables::). +as a goal target, in the order in which they were processed, and attempt +to update it. If parallel builds (*note Parallel Execution: Parallel.) +are enabled then makefiles will be rebuilt in parallel as well. + + If a makefile has a rule which says how to update it (found either in +that very makefile or in another one) or if an implicit rule applies to +it (*note Using Implicit Rules: Implicit Rules.), it will be updated if +necessary. After all makefiles have been checked, if any have actually +been changed, 'make' starts with a clean slate and reads all the +makefiles over again. (It will also attempt to update each of them over +again, but normally this will not change them again, since they are +already up to date.) Each restart will cause the special variable +'MAKE_RESTARTS' to be updated (*note Special Variables::). If you know that one or more of your makefiles cannot be remade and you want to keep 'make' from performing an implicit rule search on them, @@ -1188,10 +1214,25 @@ Double-Colon::). In the case of makefiles, a makefile that has a double-colon rule with a recipe but no prerequisites will be remade every time 'make' is run, and then again after 'make' starts over and reads the makefiles in again. This would cause an infinite loop: 'make' -would constantly remake the makefile, and never do anything else. So, -to avoid this, 'make' will *not* attempt to remake makefiles which are -specified as targets of a double-colon rule with a recipe but no -prerequisites. +would constantly remake the makefile and restart, and never do anything +else. So, to avoid this, 'make' will *not* attempt to remake makefiles +which are specified as targets of a double-colon rule with a recipe but +no prerequisites. + + Phony targets (*note Phony Targets::) have the same effect: they are +never considered up-to-date and so an included file marked as phony +would cause 'make' to restart continuously. To avoid this 'make' will +not attempt to remake makefiles which are marked phony. + + You can take advantage of this to optimize startup time: if you know +you don't need your 'Makefile' to be remade you can prevent make from +trying to remake it by adding either: + + .PHONY: Makefile + + or: + + Makefile:: ; If you do not specify any makefiles to be read with '-f' or '--file' options, 'make' will try the default makefile names; *note What Name to @@ -1202,11 +1243,9 @@ exist but can be created by running 'make' rules, you probably want the rules to be run so that the makefile can be used. Therefore, if none of the default makefiles exists, 'make' will try -to make each of them in the same order in which they are searched for -(*note What Name to Give Your Makefile: Makefile Names.) until it -succeeds in making one, or it runs out of names to try. Note that it is -not an error if 'make' cannot find or make any makefile; a makefile is -not always necessary. +to make each of them until it succeeds in making one, or it runs out of +names to try. Note that it is not an error if 'make' cannot find or +make any makefile; a makefile is not always necessary. When you use the '-t' or '--touch' option (*note Instead of Executing Recipes: Instead of Execution.), you would not want to use an @@ -1317,6 +1356,7 @@ Variable definitions are parsed as follows: IMMEDIATE ?= DEFERRED IMMEDIATE := IMMEDIATE IMMEDIATE ::= IMMEDIATE + IMMEDIATE :::= IMMEDIATE-WITH-ESCAPE IMMEDIATE += DEFERRED or IMMEDIATE IMMEDIATE != IMMEDIATE @@ -1340,6 +1380,10 @@ Variable definitions are parsed as follows: IMMEDIATE endef + define IMMEDIATE :::= + IMMEDIATE-WITH-ESCAPE + endef + define IMMEDIATE += DEFERRED or IMMEDIATE endef @@ -1352,10 +1396,15 @@ Variable definitions are parsed as follows: immediate if the variable was previously set as a simple variable (':=' or '::='), and deferred otherwise. + For the IMMEDIATE-WITH-ESCAPE operator ':::=', the value on the +right-hand side is immediately expanded but then escaped (that is, all +instances of '$' in the result of the expansion are replaced with '$$'). + For the shell assignment operator '!=', the right-hand side is evaluated immediately and handed to the shell. The result is stored in -the variable named on the left, and that variable becomes a simple -variable (and will thus be re-evaluated on each reference). +the variable named on the left, and that variable is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). Conditional Directives ---------------------- @@ -1449,17 +1498,16 @@ defined in the makefile. In order for this second expansion to occur, the special target '.SECONDEXPANSION' must be defined before the first prerequisite list that makes use of this feature. - If that special target is defined then in between the two phases -mentioned above, right at the end of the read-in phase, all the -prerequisites of the targets defined after the special target are -expanded a _second time_. In most circumstances this secondary -expansion will have no effect, since all variable and function -references will have been expanded during the initial parsing of the -makefiles. In order to take advantage of the secondary expansion phase -of the parser, then, it's necessary to _escape_ the variable or function -reference in the makefile. In this case the first expansion merely -un-escapes the reference but doesn't expand it, and expansion is left to -the secondary expansion phase. For example, consider this makefile: + If '.SECONDEXPANSION' is defined then when GNU 'make' needs to check +the prerequisites of a target, the prerequisites are expanded a _second +time_. In most circumstances this secondary expansion will have no +effect, since all variable and function references will have been +expanded during the initial parsing of the makefiles. In order to take +advantage of the secondary expansion phase of the parser, then, it's +necessary to _escape_ the variable or function reference in the +makefile. In this case the first expansion merely un-escapes the +reference but doesn't expand it, and expansion is left to the secondary +expansion phase. For example, consider this makefile: .SECONDEXPANSION: ONEVAR = onefile @@ -1626,13 +1674,12 @@ the "recipe" to use to create or update the target. The order of rules is not significant, except for determining the "default goal": the target for 'make' to consider, if you do not -otherwise specify one. The default goal is the target of the first rule -in the first makefile. If the first rule has multiple targets, only the -first target is taken as the default. There are two exceptions: a -target starting with a period is not a default unless it contains one or -more slashes, '/', as well; and, a target that defines a pattern rule -has no effect on the default goal. (*Note Defining and Redefining -Pattern Rules: Pattern Rules.) +otherwise specify one. The default goal is the first target of the +first rule in the first makefile. There are two exceptions: a target +starting with a period is not a default unless it also contains one or +more slashes, '/'; and, a target that defines a pattern rule has no +effect on the default goal. (*Note Defining and Redefining Pattern +Rules: Pattern Rules.) Therefore, we usually write the makefile so that the first rule is the one for compiling the entire program or all the programs described @@ -1756,25 +1803,25 @@ File: make.info, Node: Prerequisite Types, Next: Wildcards, Prev: Rule Syntax 4.3 Types of Prerequisites ========================== -There are actually two different types of prerequisites understood by -GNU 'make': normal prerequisites such as described in the previous -section, and "order-only" prerequisites. A normal prerequisite makes -two statements: first, it imposes an order in which recipes will be -invoked: the recipes for all prerequisites of a target will be completed -before the recipe for the target is run. Second, it imposes a -dependency relationship: if any prerequisite is newer than the target, -then the target is considered out-of-date and must be rebuilt. +There are two different types of prerequisites understood by GNU 'make': +normal prerequisites, described in the previous section, and +"order-only" prerequisites. A normal prerequisite makes two statements: +first, it imposes an order in which recipes will be invoked: the recipes +for all prerequisites of a target will be completed before the recipe +for the target is started. Second, it imposes a dependency +relationship: if any prerequisite is newer than the target, then the +target is considered out-of-date and must be rebuilt. Normally, this is exactly what you want: if a target's prerequisite is updated, then the target should also be updated. - Occasionally, however, you have a situation where you want to impose -a specific ordering on the rules to be invoked _without_ forcing the -target to be updated if one of those rules is executed. In that case, -you want to define "order-only" prerequisites. Order-only prerequisites -can be specified by placing a pipe symbol ('|') in the prerequisites -list: any prerequisites to the left of the pipe symbol are normal; any -prerequisites to the right are order-only: + Occasionally you may want to ensure that a prerequisite is built +before a target, but _without_ forcing the target to be updated if the +prerequisite is updated. "Order-only" prerequisites are used to create +this type of relationship. Order-only prerequisites can be specified by +placing a pipe symbol ('|') in the prerequisites list: any prerequisites +to the left of the pipe symbol are normal; any prerequisites to the +right are order-only: TARGETS : NORMAL-PREREQUISITES | ORDER-ONLY-PREREQUISITES @@ -1787,6 +1834,10 @@ same file to be both a normal and an order-only prerequisite, the normal prerequisite takes precedence (since they have a strict superset of the behavior of an order-only prerequisite). + Order-only prerequisites are never checked when determining if the +target is out of date; even order-only prerequisites marked as phony +(*note Phony Targets::) will not cause the target to be rebuilt. + Consider an example where your targets are to be placed in a separate directory, and that directory might not exist before 'make' is run. In this situation, you want the directory to be created before any targets @@ -1824,6 +1875,11 @@ The wildcard characters in 'make' are '*', '?' and '[...]', the same as in the Bourne shell. For example, '*.c' specifies a list of all the files (in the working directory) whose names end in '.c'. + If an expression matches multiple files than the results will be +sorted.(1) However multiple expressions will not be globally sorted. +For example, '*.c *.h' will list all the files whose names end in '.c', +sorted, followed by all the files whose names end in '.h', sorted. + The character '~' at the beginning of a file name also has special significance. If alone, or followed by a slash, it represents your home directory. For example '~/bin' expands to '/home/you/bin'. If the '~' @@ -1849,6 +1905,11 @@ specific file whose name consists of 'foo', an asterisk, and 'bar'. * Wildcard Function:: How to cause wildcard expansion where it does not normally take place. + ---------- Footnotes ---------- + + (1) Some older versions of GNU 'make' did not sort the results of +wildcard expansion. +  File: make.info, Node: Wildcard Examples, Next: Wildcard Pitfall, Prev: Wildcards, Up: Wildcards @@ -1954,6 +2015,11 @@ Note that this is different from how unmatched wildcards behave in rules, where they are used verbatim rather than ignored (*note Wildcard Pitfall::). + As with wildcard expansion in rules, the results of the 'wildcard' +function are sorted. But again, each individual expression is sorted +separately, so '$(wildcard *.c *.h)' will expand to all files matching +'.c', sorted, followed by all files matching '.h', sorted. + One use of the 'wildcard' function is to get a list of all the C source files in a directory, like this: @@ -2322,6 +2388,11 @@ Targets.) as follows: Once this is done, 'make clean' will run the recipe regardless of whether there is a file named 'clean'. + Prerequisites of '.PHONY' are always interpreted as literal target +names, never as patterns (even if they contain '%' characters). To +always rebuild a pattern rule consider using a "force target" (*note +Rules without Recipes or Prerequisites: Force Targets.). + Phony targets are also useful in conjunction with recursive invocations of 'make' (*note Recursive Use of 'make': Recursion.). In this situation the makefile will often contain a variable which lists a @@ -2341,9 +2412,11 @@ detected in a sub-make is ignored by this rule, so it will continue to build the rest of the directories even when one fails. This can be overcome by adding shell commands to note the error and exit, but then it will do so even if 'make' is invoked with the '-k' option, which is -unfortunate. Second, and perhaps more importantly, you cannot take +unfortunate. Second, and perhaps more importantly, you cannot take full advantage of 'make''s ability to build targets in parallel (*note -Parallel Execution: Parallel.), since there is only one rule. +Parallel Execution: Parallel.), since there is only one rule. Each +individual makefile's targets will be built in parallel, but only one +sub-directory will be built at a time. By declaring the sub-directories as '.PHONY' targets (you must do this as the sub-directory obviously always exists; otherwise it won't be @@ -2371,11 +2444,17 @@ for performance, even if you are not worried about the actual file existing. A phony target should not be a prerequisite of a real target file; if -it is, its recipe will be run every time 'make' goes to update that -file. As long as a phony target is never a prerequisite of a real -target, the phony target recipe will be executed only when the phony -target is a specified goal (*note Arguments to Specify the Goals: -Goals.). +it is, its recipe will be run every time 'make' considers that file. As +long as a phony target is never a prerequisite of a real target, the +phony target recipe will be executed only when the phony target is a +specified goal (*note Arguments to Specify the Goals: Goals.). + + You should not declare an included makefile as phony. Phony targets +are not intended to represent real files, and because the target is +always considered out of date make will always rebuild it then +re-execute itself (*note How Makefiles Are Remade: Remaking Makefiles.). +To avoid this, 'make' will not re-execute itself if an included file +marked as phony is re-built. Phony targets can have prerequisites. When one directory contains multiple programs, it is most convenient to describe all of the programs @@ -2529,12 +2608,42 @@ Certain names have special meanings if they appear as targets. intermediate files. *Note Chains of Implicit Rules: Chained Rules. '.INTERMEDIATE' with no prerequisites has no effect. +'.NOTINTERMEDIATE' + + Prerequisites of the special target '.NOTINTERMEDIATE' are never + considered intermediate files. *Note Chains of Implicit Rules: + Chained Rules. '.NOTINTERMEDIATE' with no prerequisites causes all + targets to be treated as not intermediate. + + If the prerequisite is a target pattern then targets that are built + using that pattern rule are not considered intermediate. + '.SECONDARY' The targets which '.SECONDARY' depends on are treated as intermediate files, except that they are never automatically deleted. *Note Chains of Implicit Rules: Chained Rules. + '.SECONDARY' can be used to avoid redundant rebuilds in some + unusual situations. For example: + + hello.bin: hello.o bye.o + $(CC) -o $@ $^ + + %.o: %.c + $(CC) -c -o $@ $< + + .SECONDARY: hello.o bye.o + + Suppose 'hello.bin' is up to date in regards to the source files, + _but_ the object file 'hello.o' is missing. Without '.SECONDARY' + make would rebuild 'hello.o' then rebuild 'hello.bin' even though + the source files had not changed. By declaring 'hello.o' as + '.SECONDARY' 'make' will not need to rebuild it and won't need to + rebuild 'hello.bin' either. Of course, of one of the source files + _were_ updated then all object files would be rebuilt so that the + creation of 'hello.bin' could succeed. + '.SECONDARY' with no prerequisites causes all targets to be treated as secondary (i.e., no target is removed because it is considered intermediate). @@ -2613,23 +2722,29 @@ Certain names have special meanings if they appear as targets. '.EXPORT_ALL_VARIABLES' Simply by being mentioned as a target, this tells 'make' to export - all variables to child processes by default. *Note Communicating - Variables to a Sub-'make': Variables/Recursion. + all variables to child processes by default. This is an + alternative to using 'export' with no arguments. *Note + Communicating Variables to a Sub-'make': Variables/Recursion. '.NOTPARALLEL' - If '.NOTPARALLEL' is mentioned as a target, then this invocation of - 'make' will be run serially, even if the '-j' option is given. Any - recursively invoked 'make' command will still run recipes in - parallel (unless its makefile also contains this target). Any - prerequisites on this target are ignored. + If '.NOTPARALLEL' is mentioned as a target with no prerequisites, + all targets in this invocation of 'make' will be run serially, even + if the '-j' option is given. Any recursively invoked 'make' + command will still run recipes in parallel (unless its makefile + also contains this target). + + If '.NOTPARALLEL' has targets as prerequisites, then all the + prerequisites of those targets will be run serially. This + implicitly adds a '.WAIT' between each prerequisite of the listed + targets. *Note Disabling Parallel Execution: Parallel Disable. '.ONESHELL' If '.ONESHELL' is mentioned as a target, then when a target is built all lines of the recipe will be given to a single invocation - of the shell rather than each line being invoked separately (*note - Recipe Execution: Execution.). + of the shell rather than each line being invoked separately. *Note + Recipe Execution: Execution. '.POSIX' @@ -2722,10 +2837,12 @@ target rule uses the separator '&:' (the '&' here is used to imply "all"). When 'make' builds any one of the grouped targets, it understands -that all the other targets in the group are also created as a result of +that all the other targets in the group are also updated as a result of the invocation of the recipe. Furthermore, if only some of the grouped targets are out of date or missing 'make' will realize that running the -recipe will update all of the targets. +recipe will update all of the targets. Finally, if any of the grouped +targets are out of date, all the grouped targets are considered out of +date. As an example, this rule defines a grouped target: @@ -3383,8 +3500,8 @@ lines will be preserved. For example: .ONESHELL: foo : bar/lose - cd $(@D) - gobble $(@F) > ../$@ + cd $( ../$@ would now work as expected even though the commands are on different recipe lines. @@ -3547,8 +3664,8 @@ GNU 'make' knows how to execute several recipes at once. Normally, 'make' will execute only one recipe at a time, waiting for it to finish before executing the next. However, the '-j' or '--jobs' option tells 'make' to execute many recipes simultaneously. You can inhibit -parallelism in a particular makefile with the '.NOTPARALLEL' -pseudo-target (*note Special Built-in Target Names: Special Targets.). +parallelism for some or all targets from within the makefile (*note +Disabling Parallel Execution: Parallel Disable.). On MS-DOS, the '-j' option has no effect, since that system doesn't support multi-processing. @@ -3593,13 +3710,97 @@ average goes below that limit, or until all the other jobs finish. * Menu: +* Parallel Disable:: Disabling parallel execution * Parallel Output:: Handling output during parallel execution * Parallel Input:: Handling input during parallel execution  -File: make.info, Node: Parallel Output, Next: Parallel Input, Prev: Parallel, Up: Parallel +File: make.info, Node: Parallel Disable, Next: Parallel Output, Prev: Parallel, Up: Parallel -5.4.1 Output During Parallel Execution +5.4.1 Disabling Parallel Execution +---------------------------------- + +If a makefile completely and accurately defines the dependency +relationships between all of its targets, then 'make' will correctly +build the goals regardless of whether parallel execution is enabled or +not. This is the ideal way to write makefiles. + + However, sometimes some or all of the targets in a makefile cannot be +executed in parallel and it's not feasible to add the prerequisites +needed to inform 'make'. In that case the makefile can use various +methods to disable parallel execution. + + If the '.NOTPARALLEL' special target with no prerequisites is +specified anywhere then the entire instance of 'make' will be run +serially, regardless of the parallel setting. For example: + + all: one two three + one two three: ; @sleep 1; echo $@ + + .NOTPARALLEL: + + Regardless of how 'make' is invoked, the targets 'one', 'two', and +'three' will be run serially. + + If the '.NOTPARALLEL' special target has prerequisites, then each of +those prerequisites will be considered a target and all prerequisites of +these targets will be run serially. Note that only when building this +target will the prerequisites be run serially: if some other target +lists the same prerequisites and is not in '.NOTPARALLEL' then these +prerequisites may be run in parallel. For example: + + all: base notparallel + + base: one two three + notparallel: one two three + + one two three: ; @sleep 1; echo $@ + + .NOTPARALLEL: notparallel + + Here 'make -j base' will run the targets 'one', 'two', and 'three' in +parallel, while 'make -j notparallel' will run them serially. If you +run 'make -j all' then they _will_ be run in parallel since 'base' lists +them as prerequisites and is not serialized. + + The '.NOTPARALLEL' target should not have commands. + + Finally you can control the serialization of specific prerequisites +in a fine-grained way using the '.WAIT' special target. When this +target appears in a prerequisite list and parallel execution is enabled, +'make' will not build any of the prerequisites to the _right_ of '.WAIT' +until all prerequisites to the _left_ of '.WAIT' have completed. For +example: + + all: one two .WAIT three + one two three: ; @sleep 1; echo $@ + + If parallel execution is enabled, 'make' will try to build 'one' and +'two' in parallel but will not try to build 'three' until both are +complete. + + As with targets provided to '.NOTPARALLEL', '.WAIT' takes effect only +when building the target in whose prerequisite list it appears. If the +same prerequisites are present in other targets, without '.WAIT', then +they may still be run in parallel. Because of this, neither +'.NOTPARALLEL' with targets nor '.WAIT' are as reliable for controlling +parallel execution as defining a prerequisite relationship. However +they are easy to use and may be sufficient in less complex situations. + + The '.WAIT' prerequisite will not be present in any of the automatic +variables for the rule. + + You can create an actual target '.WAIT' in your makefile for +portability but this is not required to use this feature. If a '.WAIT' +target is created it should not have prerequisites or commands. + + The '.WAIT' feature is also implemented in other versions of 'make' +and it's specified in the POSIX standard for 'make'. + + +File: make.info, Node: Parallel Output, Next: Parallel Input, Prev: Parallel Disable, Up: Parallel + +5.4.2 Output During Parallel Execution -------------------------------------- When running several recipes in parallel the output from each recipe @@ -3688,7 +3889,7 @@ though the output will ultimately go to the terminal.  File: make.info, Node: Parallel Input, Prev: Parallel Output, Up: Parallel -5.4.2 Input During Parallel Execution +5.4.3 Input During Parallel Execution ------------------------------------- Two processes cannot both take input from the same device at the same @@ -3938,10 +4139,8 @@ sub-'make', in turn, uses the environment to initialize its table of variable values. *Note Variables from the Environment: Environment. Except by explicit request, 'make' exports a variable only if it is -either defined in the environment initially or set on the command line, -and if its name consists only of letters, numbers, and underscores. -Some shells cannot cope with environment variable names consisting of -characters other than letters, numbers, and underscores. +either defined in the environment initially, or if set on the command +line and its name consists only of letters, numbers, and underscores. The value of the 'make' variable 'SHELL' is not exported. Instead, the value of the 'SHELL' variable from the invoking environment is @@ -4014,25 +4213,35 @@ is just like: This tells 'make' that variables which are not explicitly mentioned in an 'export' or 'unexport' directive should be exported. Any variable -given in an 'unexport' directive will still _not_ be exported. If you -use 'export' by itself to export variables by default, variables whose -names contain characters other than alphanumerics and underscores will -not be exported unless specifically mentioned in an 'export' directive. +given in an 'unexport' directive will still _not_ be exported. The behavior elicited by an 'export' directive by itself was the default in older versions of GNU 'make'. If your makefiles depend on this behavior and you want to be compatible with old versions of 'make', -you can write a rule for the special target '.EXPORT_ALL_VARIABLES' +you can add the special target '.EXPORT_ALL_VARIABLES' to your makefile instead of using the 'export' directive. This will be ignored by old 'make's, while the 'export' directive will cause a syntax error. - Likewise, you can use 'unexport' by itself to tell 'make' _not_ to -export variables by default. Since this is the default behavior, you -would only need to do this if 'export' had been used by itself earlier -(in an included makefile, perhaps). You *cannot* use 'export' and -'unexport' by themselves to have variables exported for some recipes and -not for others. The last 'export' or 'unexport' directive that appears -by itself determines the behavior for the entire run of 'make'. + When using 'export' by itself or '.EXPORT_ALL_VARIABLES' to export +variables by default, only variables whose names consist solely of +alphanumerics and underscores will be exported. To export other +variables you must specifically mention them in an 'export' directive. + + Adding a variable's value to the environment requires it to be +expanded. If expanding a variable has side-effects (such as the 'info' +or 'eval' or similar functions) then these side-effects will be seen +every time a command is invoked. You can avoid this by ensuring that +such variables have names which are not exportable by default. However, +a better solution is to _not_ use this "export by default" facility at +all, and instead explicitly 'export' the relevant variables by name. + + You can use 'unexport' by itself to tell 'make' _not_ to export +variables by default. Since this is the default behavior, you would +only need to do this if 'export' had been used by itself earlier (in an +included makefile, perhaps). You *cannot* use 'export' and 'unexport' +by themselves to have variables exported for some recipes and not for +others. The last 'export' or 'unexport' directive that appears by +itself determines the behavior for the entire run of 'make'. As a special feature, the variable 'MAKELEVEL' is changed when it is passed down from level to level. This variable's value is a string @@ -4070,6 +4279,14 @@ its environment. In response, it takes the flags from that value and processes them as if they had been given as arguments. *Note Summary of Options: Options Summary. + The value of 'MAKEFLAGS' is a possibly empty group of characters +representing single-letter options that take no argument, followed by a +space and any options that take arguments or which have long option +names. If an option has both single-letter and long options, the +single-letter option is always preferred. If there are no single-letter +options on the command line, then the value of 'MAKEFLAGS' starts with a +space. + Likewise variables defined on the command line are passed to the sub-'make' through 'MAKEFLAGS'. Words in the value of 'MAKEFLAGS' that contain '=', 'make' treats as variable definitions just as if they @@ -4097,7 +4314,7 @@ possible in parallel, this is passed down, since multiple infinities are no more than one. If you do not want to pass the other flags down, you must change the -value of 'MAKEFLAGS', like this: +value of 'MAKEFLAGS', for example like this: subsystem: cd subdir && $(MAKE) MAKEFLAGS= @@ -4322,7 +4539,9 @@ called "macros".) Variables and functions in all parts of a makefile are expanded when read, except for in recipes, the right-hand sides of variable definitions using '=', and the bodies of variable definitions using the -'define' directive. +'define' directive. The value a variable expands to is that of its most +recent definition at the time of expansion. In other words, variables +are dynamically scoped. Variables can represent lists of file names, options to pass to compilers, programs to run, directories to look in for source files, @@ -4424,11 +4643,26 @@ File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using V 6.2 The Two Flavors of Variables ================================ -There are two ways that a variable in GNU 'make' can have a value; we -call them the two "flavors" of variables. The two flavors are -distinguished in how they are defined and in what they do when expanded. +There are different ways that a variable in GNU 'make' can get a value; +we call them the "flavors" of variables. The flavors are distinguished +in how they handle the values they are assigned in the makefile, and in +how those values are managed when the variable is later used and +expanded. + +* Menu: + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + + +File: make.info, Node: Recursive Assignment, Next: Simple Assignment, Prev: Flavors, Up: Flavors - The first flavor of variable is a "recursively expanded" variable. +6.2.1 Recursively Expanded Variable Assignment +---------------------------------------------- + +The first flavor of variable is a "recursively expanded" variable. Variables of this sort are defined by lines using '=' (*note Setting Variables: Setting.) or by the 'define' directive (*note Defining Multi-Line Variables: Multi-Line.). The value you specify is installed @@ -4471,21 +4705,27 @@ slower; worse, it causes the 'wildcard' and 'shell' functions to give unpredictable results because you cannot easily control when they are called, or even how many times. - To avoid all the problems and inconveniences of recursively expanded + +File: make.info, Node: Simple Assignment, Next: Immediate Assignment, Prev: Recursive Assignment, Up: Flavors + +6.2.2 Simply Expanded Variable Assignment +----------------------------------------- + +To avoid the problems and inconveniences of recursively expanded variables, there is another flavor: simply expanded variables. "Simply expanded variables" are defined by lines using ':=' or '::=' (*note Setting Variables: Setting.). Both forms are equivalent in GNU 'make'; however only the '::=' form is described by the POSIX standard -(support for '::=' was added to the POSIX standard in 2012, so older -versions of 'make' won't accept this form either). +(support for '::=' is added to the POSIX standard for POSIX Issue 8). - The value of a simply expanded variable is scanned once and for all, -expanding any references to other variables and functions, when the -variable is defined. The actual value of the simply expanded variable -is the result of expanding the text that you write. It does not contain -any references to other variables; it contains their values _as of the -time this variable was defined_. Therefore, + The value of a simply expanded variable is scanned once, expanding +any references to other variables and functions, when the variable is +defined. Once that expansion is complete the value of the variable is +never expanded again: when the variable is used the value is copied +verbatim as the expansion. If the value contained variable references +the result of the expansion will contain their values _as of the time +this variable was defined_. Therefore, x := foo y := $(x) bar @@ -4496,9 +4736,6 @@ is equivalent to y := foo bar x := later - When a simply expanded variable is referenced, its value is -substituted verbatim. - Here is a somewhat more complicated example, illustrating the use of ':=' in conjunction with the 'shell' function. (*Note The 'shell' Function: Shell Function.) This example also shows use of the variable @@ -4551,7 +4788,76 @@ Here the value of the variable 'dir' is '/foo/bar ' (with four trailing spaces), which was probably not the intention. (Imagine something like '$(dir)/file' with this definition!) - There is another assignment operator for variables, '?='. This is + +File: make.info, Node: Immediate Assignment, Next: Conditional Assignment, Prev: Simple Assignment, Up: Flavors + +6.2.3 Immediately Expanded Variable Assignment +---------------------------------------------- + +Another form of assignment allows for immediate expansion, but unlike +simple assignment the resulting variable is recursive: it will be +re-expanded again on every use. In order to avoid unexpected results, +after the value is immediately expanded it will automatically be quoted: +all instances of '$' in the value after expansion will be converted into +'$$'. This type of assignment uses the ':::=' operator. For example, + + var = first + OUT :::= $(var) + var = second + +results in the 'OUT' variable containing the text 'first', while here: + + var = one$$two + OUT :::= $(var) + var = three$$four + +results in the 'OUT' variable containing the text 'one$$two'. The value +is expanded when the variable is assigned, so the result is the +expansion of the first value of 'var', 'one$two'; then the value is +re-escaped before the assignment is complete giving the final result of +'one$$two'. + + The variable 'OUT' is thereafter considered a recursive variable, so +it will be re-expanded when it is used. + + This seems functionally equivalent to the ':=' / '::=' operators, but +there are a few differences: + + First, after assignment the variable is a normal recursive variable; +when you append to it with '+=' the value on the right-hand side is not +expanded immediately. If you prefer the '+=' operator to expand the +right-hand side immediately you should use the ':=' / '::=' assignment +instead. + + Second, these variables are slightly less efficient than simply +expanded variables since they do need to be re-expanded when they are +used, rather than merely copied. However since all variable references +are escaped this expansion simply un-escapes the value, it won't expand +any variables or run any functions. + + Here is another example: + + var = one$$two + OUT :::= $(var) + OUT += $(var) + var = three$$four + + After this, the value of 'OUT' is the text 'one$$two $(var)'. When +this variable is used it will be expanded and the result will be +'one$two three$four'. + + This style of assignment is equivalent to the traditional BSD 'make' +':=' operator; as you can see it works slightly differently than the GNU +'make' ':=' operator. The ':::=' operator is added to the POSIX +specification in Issue 8 to provide portability. + + +File: make.info, Node: Conditional Assignment, Prev: Immediate Assignment, Up: Flavors + +6.2.4 Conditional Variable Assignment +------------------------------------- + +There is another assignment operator for variables, '?='. This is called a conditional variable assignment operator, because it only has an effect if the variable is not yet defined. This statement: @@ -4615,9 +4921,7 @@ the 'patsubst' function. It has the same form '$(VAR:A=B)' described above, except that now A must contain a single '%' character. This case is equivalent to '$(patsubst A,B,$(VAR))'. *Note Functions for String Substitution and Analysis: Text Functions, for a description of the -'patsubst' function. - -For example: +'patsubst' function. For example: foo := a.o b.o l.a c.o bar := $(foo:%.o=%.c) @@ -4630,12 +4934,9 @@ File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced 6.3.2 Computed Variable Names ----------------------------- -Computed variable names are a complicated concept needed only for -sophisticated makefile programming. For most purposes you need not -consider them, except to know that making a variable with a dollar sign -in its name might have strange results. However, if you are the type -that wants to understand everything, or you are actually interested in -what they do, read on. +Computed variable names are an advanced concept, very useful in more +sophisticated makefile programming. In simple situations you need not +consider them, but they can be extremely useful. Variables may be referenced inside the name of a variable. This is called a "computed variable name" or a "nested variable reference". For @@ -4781,6 +5082,10 @@ Variables can get values in several different ways: (*note Setting Variables: Setting.) or with a verbatim definition (*note Defining Multi-Line Variables: Multi-Line.). + * You can specify a short-lived value with the 'let' function (*note + Let Function::) or with the 'foreach' function (*note Foreach + Function::). + * Variables in the environment become 'make' variables. *Note Variables from the Environment: Environment. @@ -4798,19 +5103,22 @@ File: make.info, Node: Setting, Next: Appending, Prev: Values, Up: Using Var ===================== To set a variable from the makefile, write a line starting with the -variable name followed by '=', ':=', or '::='. Whatever follows the -'=', ':=', or '::=' on the line becomes the value. For example, +variable name followed by one of the assignment operators '=', ':=', +'::=', or ':::='. Whatever follows the operator and any initial +whitespace on the line becomes the value. For example, objects = main.o foo.o bar.o utils.o -defines a variable named 'objects'. Whitespace around the variable name -and immediately after the '=' is ignored. +defines a variable named 'objects' to contain the value 'main.o foo.o +bar.o utils.o'. Whitespace around the variable name and immediately +after the '=' is ignored. Variables defined with '=' are "recursively expanded" variables. Variables defined with ':=' or '::=' are "simply expanded" variables; these definitions can contain variable references which will be expanded -before the definition is made. *Note The Two Flavors of Variables: -Flavors. +before the definition is made. Variables defined with ':::=' are +"immediately expanded" variables. The different assignment operators +are described in *Note The Two Flavors of Variables: Flavors. The variable name may contain function and variable references, which are expanded when the line is read to find the actual variable name to @@ -4918,14 +5226,9 @@ is exactly equivalent to: variable := $(variable) more On the other hand, when you use '+=' with a variable that you defined -first to be recursively-expanded using plain '=', 'make' does something -a bit different. Recall that when you define a recursively-expanded -variable, 'make' does not expand the value you set for variable and -function references immediately. Instead it stores the text verbatim, -and saves these variable and function references to be expanded later, -when you refer to the new variable (*note The Two Flavors of Variables: -Flavors.). When you use '+=' on a recursively-expanded variable, it is -this unexpanded text to which 'make' appends the new text you specify. +first to be recursively-expanded using plain '=' or ':::=', 'make' +appends the un-expanded text to the existing value, whatever it is. +This means that variable = value variable += more @@ -5141,12 +5444,11 @@ things. (Note this is not totally reliable; some makefiles set 'CFLAGS' explicitly and therefore are not affected by the value in the environment.) - When 'make' runs a recipe, variables defined in the makefile are -placed into the environment of each shell. This allows you to pass -values to sub-'make' invocations (*note Recursive Use of 'make': -Recursion.). By default, only variables that came from the environment -or the command line are passed to recursive invocations. You can use -the 'export' directive to pass other variables. *Note Communicating + When 'make' runs a recipe, some variables defined in the makefile are +placed into the environment of each command 'make' invokes. By default, +only variables that came from the 'make''s environment or set on its +command line are placed into the environment of the commands. You can +use the 'export' directive to pass other variables. *Note Communicating Variables to a Sub-'make': Variables/Recursion, for full details. Other use of variables from the environment is not recommended. It @@ -5169,10 +5471,11 @@ File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Environ Variable values in 'make' are usually global; that is, they are the same regardless of where they are evaluated (unless they're reset, of -course). One exception to that is automatic variables (*note Automatic -Variables::). +course). Exceptions to that are variables defined with the 'let' +function (*note Let Function::) or the 'foreach' function (*note Foreach +Function::, and automatic variables (*note Automatic Variables::). - The other exception is "target-specific variable values". This + Another exception are "target-specific variable values". This feature allows you to define different values for the same variable, based on the target that 'make' is currently building. As with automatic variables, these values are only available within the context @@ -5183,15 +5486,15 @@ of a target's recipe (and in other target-specific assignments). TARGET ... : VARIABLE-ASSIGNMENT Target-specific variable assignments can be prefixed with any or all -of the special keywords 'export', 'override', or 'private'; these apply -their normal behavior to this instance of the variable only. +of the special keywords 'export', 'unexport', 'override', or 'private'; +these apply their normal behavior to this instance of the variable only. Multiple TARGET values create a target-specific variable value for each member of the target list individually. The VARIABLE-ASSIGNMENT can be any valid form of assignment; -recursive ('='), simple (':=' or '::='), appending ('+='), or -conditional ('?='). All variables that appear within the +recursive ('='), simple (':=' or '::='), immediate ('::='), appending +('+='), or conditional ('?='). All variables that appear within the VARIABLE-ASSIGNMENT are evaluated within the context of the target: thus, any previously-defined target-specific variable values will be in effect. Note that this variable is actually distinct from any "global" @@ -5445,10 +5748,33 @@ GNU 'make' supports some variables that have special properties. Supports "else if" non-nested conditionals. *Note Syntax of Conditionals: Conditional Syntax. + 'extra-prereqs' + Supports the '.EXTRA_PREREQS' special target. + + 'grouped-target' + Supports grouped target syntax for explicit rules. *Note + Multiple Targets in a Rule: Multiple Targets. + + 'guile' + Has GNU Guile available as an embedded extension language. + *Note GNU Guile Integration: Guile Integration. + 'jobserver' Supports "job server" enhanced parallel builds. *Note Parallel Execution: Parallel. + 'jobserver-fifo' + Supports "job server" enhanced parallel builds using named + pipes. *Note Integrating GNU 'make': Integrating make. + + 'load' + Supports dynamically loadable objects for creating custom + extensions. *Note Loading Dynamic Objects: Loading Objects. + + 'notintermediate' + Supports the '.NOTINTERMEDIATE' special target. *Note + Integrating GNU 'make': Integrating make. + 'oneshell' Supports the '.ONESHELL' special target. *Note Using One Shell: One Shell. @@ -5457,9 +5783,16 @@ GNU 'make' supports some variables that have special properties. Supports order-only prerequisites. *Note Types of Prerequisites: Prerequisite Types. + 'output-sync' + Supports the '--output-sync' command line option. *Note + Summary of Options: Options Summary. + 'second-expansion' Supports secondary expansion of prerequisite lists. + 'shell-export' + Supports exporting 'make' variables to 'shell' functions. + 'shortest-stem' Uses the "shortest stem" method of choosing which pattern, of multiple applicable options, will be used. *Note How Patterns @@ -5474,17 +5807,11 @@ GNU 'make' supports some variables that have special properties. Supports the 'undefine' directive. *Note Undefine Directive::. - 'guile' - Has GNU Guile available as an embedded extension language. - *Note GNU Guile Integration: Guile Integration. - - 'load' - Supports dynamically loadable objects for creating custom - extensions. *Note Loading Dynamic Objects: Loading Objects. - '.INCLUDE_DIRS' Expands to a list of directories that 'make' searches for included - makefiles (*note Including Other Makefiles: Include.). + makefiles (*note Including Other Makefiles: Include.). Note that + modifying this variable's value does not change the list of + directories which are searched. '.EXTRA_PREREQS' Each word in this variable is a new prerequisite which is added to @@ -5505,7 +5832,8 @@ GNU 'make' supports some variables that have special properties. like this: myprog: myprog.o file1.o file2.o $(CC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $(CC),$^) $(LDLIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ + $(filter-out $(CC),$^) $(LDLIBS) Then consider having multiple extra prerequisites: they would all have to be filtered out. Using '.EXTRA_PREREQS' and @@ -5792,15 +6120,21 @@ function (*note Functions for String Substitution and Analysis: Text Functions.). This is useful when 'touch' is not enough to make a file appear up to date. + Recall that 'MAKEFLAGS' will put all single-letter options (such as +'-t') into the first word, and that word will be empty if no +single-letter options were given. To work with this, it's helpful to +add a value at the start to ensure there's a word: for example +'-$(MAKEFLAGS)'. + The 'findstring' function determines whether one string appears as a substring of another. If you want to test for the '-t' flag, use 't' as -the first string and the value of 'MAKEFLAGS' as the other. +the first string and the first word of 'MAKEFLAGS' as the other. For example, here is how to arrange to use 'ranlib -t' to finish marking an archive file up to date: archive.a: ... - ifneq (,$(findstring t,$(MAKEFLAGS))) + ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) +touch archive.a +ranlib -t archive.a else @@ -5830,6 +6164,7 @@ the point of the call, just as a variable might be substituted. * Text Functions:: General-purpose text manipulation functions. * File Name Functions:: Functions for manipulating file names. * Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. * Foreach Function:: Repeat some text with controlled variation. * File Function:: Write text to a file. * Call Function:: Expand a user-defined function. @@ -5874,17 +6209,30 @@ wisest to use the same kind of delimiters for all the references; write clearer, and because only one type of delimiter is matched to find the end of the reference. - The text written for each argument is processed by substitution of -variables and function calls to produce the argument value, which is the -text on which the function acts. The substitution is done in the order -in which the arguments appear. + Each argument is expanded before the function is invoked, unless +otherwise noted below. The substitution is done in the order in which +the arguments appear. + +Special Characters +.................. + +When using characters that are special to 'make' as function arguments, +you may need to hide them. GNU 'make' doesn't support escaping +characters with backslashes or other escape sequences; however, because +arguments are split before they are expanded you can hide them by +putting them into variables. - Commas and unmatched parentheses or braces cannot appear in the text -of an argument as written; leading spaces cannot appear in the text of -the first argument as written. These characters can be put into the -argument value by variable substitution. First define variables 'comma' -and 'space' whose values are isolated comma and space characters, then -substitute these variables where such characters are wanted, like this: + Characters you may need to hide include: + + * Commas + * Initial whitespace in the first argument + * Unmatched open parenthesis or brace + * An open parenthesis or brace if you don't want it to start a + matched pair + + For example, you can define variables 'comma' and 'space' whose +values are isolated comma and space characters, then substitute these +variables where such characters are wanted, like this: comma:= , empty:= @@ -5918,9 +6266,10 @@ Here are some functions that operate on strings: replaces them with REPLACEMENT. Here PATTERN may contain a '%' which acts as a wildcard, matching any number of any characters within a word. If REPLACEMENT also contains a '%', the '%' is - replaced by the text that matched the '%' in PATTERN. Only the - first '%' in the PATTERN and REPLACEMENT is treated this way; any - subsequent '%' is unchanged. + replaced by the text that matched the '%' in PATTERN. Words that + do not match the pattern are kept without change in the output. + Only the first '%' in the PATTERN and REPLACEMENT is treated this + way; any subsequent '%' is unchanged. '%' characters in 'patsubst' function invocations can be quoted with preceding backslashes ('\'). Backslashes that would otherwise @@ -6257,12 +6606,12 @@ way and the results are concatenated with single spaces between them. 'wildcard' function to test for existence.  -File: make.info, Node: Conditional Functions, Next: Foreach Function, Prev: File Name Functions, Up: Functions +File: make.info, Node: Conditional Functions, Next: Let Function, Prev: File Name Functions, Up: Functions 8.4 Functions for Conditionals ============================== -There are three functions that provide conditional expansion. A key +There are four functions that provide conditional expansion. A key aspect of these functions is that not all of the arguments are expanded initially. Only those arguments which need to be expanded, will be expanded. @@ -6308,16 +6657,104 @@ expanded. then the result of the expansion is the expansion of the last argument. +'$(intcmp LHS,RHS[,LT-PART[,EQ-PART[,GT-PART]]])' + The 'intcmp' function provides support for numerical comparison of + integers. This function has no counterpart among the GNU 'make' + makefile conditionals. + + The left-hand side, LHS, and right-hand side, RHS, are expanded and + parsed as integral numbers in base 10. Expansion of the remaining + arguments is controlled by how the numerical left-hand side + compares to the numerical right-hand side. + + If there are no further arguments, then the function expands to + empty if the left-hand side and right-hand side do not compare + equal, or to their numerical value if they do compare equal. + + Else if the left-hand side is strictly less than the right-hand + side, the 'intcmp' function evaluates to the expansion of the third + argument, LT-PART. If both sides compare equal, then the 'intcmp' + function evaluates to the expansion of the fourth argument, + EQ-PART. If the left-hand side is strictly greater than the + right-hand side, then the 'intcmp' function evaluates to the + expansion of the fifth argument, GT-PART. + + If GT-PART is missing, it defaults to EQ-PART. If EQ-PART is + missing, it defaults to the empty string. Thus both '$(intcmp + 9,7,hello)' and '$(intcmp 9,7,hello,world,)' evaluate to the empty + string, while '$(intcmp 9,7,hello,world)' (notice the absence of a + comma after 'world') evaluates to 'world'. + + +File: make.info, Node: Let Function, Next: Foreach Function, Prev: Conditional Functions, Up: Functions + +8.5 The 'let' Function +====================== + +The 'let' function provides a means to limit the scope of a variable. +The assignment of the named variables in a 'let' expression is in effect +only within the text provided by the 'let' expression, and this +assignment doesn't impact that named variable in any outer scope. + + Additionally, the 'let' function enables list unpacking by assigning +all unassigned values to the last named variable. + + The syntax of the 'let' function is: + + $(let VAR [VAR ...],[LIST],TEXT) + +The first two arguments, VAR and LIST, are expanded before anything else +is done; note that the last argument, TEXT, is *not* expanded at the +same time. Next, each word of the expanded value of LIST is bound to +each of the variable names, VAR, in turn, with the final variable name +being bound to the remainder of the expanded LIST. In other words, the +first word of LIST is bound to the first variable VAR, the second word +to the second variable VAR, and so on. + + If there are more variable names in VAR than there are words in LIST, +the remaining VAR variable names are set to the empty string. If there +are fewer VARs than words in LIST then the last VAR is set to all +remaining words in LIST. + + The variables in VAR are assigned as simply-expanded variables during +the execution of 'let'. *Note The Two Flavors of Variables: Flavors. + + After all variables are thus bound, TEXT is expanded to provide the +result of the 'let' function. + + For example, this macro reverses the order of the words in the list +that it is given as its first argument: + + reverse = $(let first rest,$1,\ + $(if $(rest),$(call reverse,$(rest)) )$(first)) + + all: ; @echo $(call reverse,d c b a) + +will print 'a b c d'. When first called, 'let' will expand $1 to 'd c b +a'. It will then assign FIRST to 'd' and assign REST to 'c b a'. It +will then expand the if-statement, where '$(rest)' is not empty so we +recursively invoke the REVERSE function with the value of REST which is +now 'c b a'. The recursive invocation of 'let' assigns FIRST to 'c' and +REST to 'b a'. The recursion continues until 'let' is called with just +a single value, 'a'. Here FIRST is 'a' and REST is empty, so we do not +recurse but simply expand '$(first)' to 'a' and return, which adds ' b', +etc. + + After the REVERSE call is complete, the FIRST and REST variables are +no longer set. If variables by those names existed beforehand, they are +not affected by the expansion of the 'reverse' macro. +  -File: make.info, Node: Foreach Function, Next: File Function, Prev: Conditional Functions, Up: Functions +File: make.info, Node: Foreach Function, Next: File Function, Prev: Let Function, Up: Functions -8.5 The 'foreach' Function +8.6 The 'foreach' Function ========================== -The 'foreach' function is very different from other functions. It -causes one piece of text to be used repeatedly, each time with a -different substitution performed on it. It resembles the 'for' command -in the shell 'sh' and the 'foreach' command in the C-shell 'csh'. +The 'foreach' function is similar to the 'let' function, but very +different from other functions. It causes one piece of text to be used +repeatedly, each time with a different substitution performed on it. +The 'foreach' function resembles the 'for' command in the shell 'sh' and +the 'foreach' command in the C-shell 'csh'. The syntax of the 'foreach' function is: @@ -6363,14 +6800,14 @@ actual function call to be re-expanded under the control of 'foreach'; a simply-expanded variable would not do, since 'wildcard' would be called only once at the time of defining 'find_files'. - The 'foreach' function has no permanent effect on the variable VAR; -its value and flavor after the 'foreach' function call are the same as -they were beforehand. The other values which are taken from LIST are in -effect only temporarily, during the execution of 'foreach'. The -variable VAR is a simply-expanded variable during the execution of -'foreach'. If VAR was undefined before the 'foreach' function call, it -is undefined after the call. *Note The Two Flavors of Variables: -Flavors. + Like the 'let' function, the 'foreach' function has no permanent +effect on the variable VAR; its value and flavor after the 'foreach' +function call are the same as they were beforehand. The other values +which are taken from LIST are in effect only temporarily, during the +execution of 'foreach'. The variable VAR is a simply-expanded variable +during the execution of 'foreach'. If VAR was undefined before the +'foreach' function call, it is undefined after the call. *Note The Two +Flavors of Variables: Flavors. You must take care when using complex variable expressions that result in variable names because many strange things are valid variable @@ -6385,7 +6822,7 @@ no?), but it is more likely to be a mistake.  File: make.info, Node: File Function, Next: Call Function, Prev: Foreach Function, Up: Functions -8.6 The 'file' Function +8.7 The 'file' Function ======================= The 'file' function allows the makefile to write to or read from a file. @@ -6446,7 +6883,7 @@ input file, you might write your recipe like this:  File: make.info, Node: Call Function, Next: Value Function, Prev: File Function, Up: Functions -8.7 The 'call' Function +8.8 The 'call' Function ======================= The 'call' function is unique in that it can be used to create new @@ -6488,7 +6925,7 @@ references to built-in functions that have special expansion rules, like foo = $(call reverse,a,b) -Here FOO will contain 'b a'. +Here 'foo' will contain 'b a'. This one is slightly more interesting: it defines a macro to search for the first instance of a program in 'PATH': @@ -6497,7 +6934,7 @@ for the first instance of a program in 'PATH': LS := $(call pathsearch,ls) -Now the variable LS contains '/bin/ls' or similar. +Now the variable 'LS' contains '/bin/ls' or similar. The 'call' function can be nested. Each recursive invocation gets its own local values for '$(1)', etc. that mask the values of @@ -6506,12 +6943,12 @@ function: map = $(foreach a,$(2),$(call $(1),$(a))) - Now you can MAP a function that normally takes only one argument, + Now you can 'map' a function that normally takes only one argument, such as 'origin', to multiple values in one step: o = $(call map,origin,o map MAKE) - and end up with O containing something like 'file file default'. + and end up with 'o' containing something like 'file file default'. A final caution: be careful when adding whitespace to the arguments to 'call'. As with other functions, any whitespace contained in the @@ -6522,7 +6959,7 @@ parameters to 'call'.  File: make.info, Node: Value Function, Next: Eval Function, Prev: Call Function, Up: Functions -8.8 The 'value' Function +8.9 The 'value' Function ======================== The 'value' function provides a way for you to use the value of a @@ -6562,8 +6999,8 @@ avoided the expansion.  File: make.info, Node: Eval Function, Next: Origin Function, Prev: Value Function, Up: Functions -8.9 The 'eval' Function -======================= +8.10 The 'eval' Function +======================== The 'eval' function is very special: it allows you to define new makefile constructs that are not constant; which are the result of @@ -6622,7 +7059,7 @@ Now your individual makefiles are quite straightforward.  File: make.info, Node: Origin Function, Next: Flavor Function, Prev: Eval Function, Up: Functions -8.10 The 'origin' Function +8.11 The 'origin' Function ========================== The 'origin' function is unlike most other functions in that it does not @@ -6716,7 +7153,7 @@ String Substitution and Analysis: Text Functions.  File: make.info, Node: Flavor Function, Next: Make Control Functions, Prev: Origin Function, Up: Functions -8.11 The 'flavor' Function +8.12 The 'flavor' Function ========================== The 'flavor' function, like the 'origin' function, does not operate on @@ -6751,7 +7188,7 @@ the variable VARIABLE:  File: make.info, Node: Make Control Functions, Next: Shell Function, Prev: Flavor Function, Up: Functions -8.12 Functions That Control Make +8.13 Functions That Control Make ================================ These functions control the way make runs. Generally, they are used to @@ -6796,429 +7233,3 @@ if some sort of environmental error is detected. added. The result of the expansion of this function is the empty string. - -File: make.info, Node: Shell Function, Next: Guile Function, Prev: Make Control Functions, Up: Functions - -8.13 The 'shell' Function -========================= - -The 'shell' function is unlike any other function other than the -'wildcard' function (*note The Function 'wildcard': Wildcard Function.) -in that it communicates with the world outside of 'make'. - - The 'shell' function performs the same function that backquotes ('`') -perform in most shells: it does "command expansion". This means that it -takes as an argument a shell command and evaluates to the output of the -command. The only processing 'make' does on the result is to convert -each newline (or carriage-return / newline pair) to a single space. If -there is a trailing (carriage-return and) newline it will simply be -removed. - - The commands run by calls to the 'shell' function are run when the -function calls are expanded (*note How 'make' Reads a Makefile: Reading -Makefiles.). Because this function involves spawning a new shell, you -should carefully consider the performance implications of using the -'shell' function within recursively expanded variables vs. simply -expanded variables (*note The Two Flavors of Variables: Flavors.). - - After the 'shell' function or '!=' assignment operator is used, its -exit status is placed in the '.SHELLSTATUS' variable. - - Here are some examples of the use of the 'shell' function: - - contents := $(shell cat foo) - -sets 'contents' to the contents of the file 'foo', with a space (rather -than a newline) separating each line. - - files := $(shell echo *.c) - -sets 'files' to the expansion of '*.c'. Unless 'make' is using a very -strange shell, this has the same result as '$(wildcard *.c)' (as long as -at least one '.c' file exists). - - -File: make.info, Node: Guile Function, Prev: Shell Function, Up: Functions - -8.14 The 'guile' Function -========================= - -If GNU 'make' is built with support for GNU Guile as an embedded -extension language then the 'guile' function will be available. The -'guile' function takes one argument which is first expanded by 'make' in -the normal fashion, then passed to the GNU Guile evaluator. The result -of the evaluator is converted into a string and used as the expansion of -the 'guile' function in the makefile. See *note GNU Guile Integration: -Guile Integration. for details on writing extensions to 'make' in Guile. - - You can determine whether GNU Guile support is available by checking -the '.FEATURES' variable for the word GUILE. - - -File: make.info, Node: Running, Next: Implicit Rules, Prev: Functions, Up: Top - -9 How to Run 'make' -******************* - -A makefile that says how to recompile a program can be used in more than -one way. The simplest use is to recompile every file that is out of -date. Usually, makefiles are written so that if you run 'make' with no -arguments, it does just that. - - But you might want to update only some of the files; you might want -to use a different compiler or different compiler options; you might -want just to find out which files are out of date without changing them. - - By giving arguments when you run 'make', you can do any of these -things and many others. - - The exit status of 'make' is always one of three values: -'0' - The exit status is zero if 'make' is successful. -'2' - The exit status is two if 'make' encounters any errors. It will - print messages describing the particular errors. -'1' - The exit status is one if you use the '-q' flag and 'make' - determines that some target is not already up to date. *Note - Instead of Executing Recipes: Instead of Execution. - -* Menu: - -* Makefile Arguments:: How to specify which makefile to use. -* Goals:: How to use goal arguments to specify which - parts of the makefile to use. -* Instead of Execution:: How to use mode flags to specify what - kind of thing to do with the recipes - in the makefile other than simply - execute them. -* Avoiding Compilation:: How to avoid recompiling certain files. -* Overriding:: How to override a variable to specify - an alternate compiler and other things. -* Testing:: How to proceed past some errors, to - test compilation. -* Options Summary:: Summary of Options - - -File: make.info, Node: Makefile Arguments, Next: Goals, Prev: Running, Up: Running - -9.1 Arguments to Specify the Makefile -===================================== - -The way to specify the name of the makefile is with the '-f' or '--file' -option ('--makefile' also works). For example, '-f altmake' says to use -the file 'altmake' as the makefile. - - If you use the '-f' flag several times and follow each '-f' with an -argument, all the specified files are used jointly as makefiles. - - If you do not use the '-f' or '--file' flag, the default is to try -'GNUmakefile', 'makefile', and 'Makefile', in that order, and use the -first of these three which exists or can be made (*note Writing -Makefiles: Makefiles.). - - -File: make.info, Node: Goals, Next: Instead of Execution, Prev: Makefile Arguments, Up: Running - -9.2 Arguments to Specify the Goals -================================== - -The "goals" are the targets that 'make' should strive ultimately to -update. Other targets are updated as well if they appear as -prerequisites of goals, or prerequisites of prerequisites of goals, etc. - - By default, the goal is the first target in the makefile (not -counting targets that start with a period). Therefore, makefiles are -usually written so that the first target is for compiling the entire -program or programs they describe. If the first rule in the makefile -has several targets, only the first target in the rule becomes the -default goal, not the whole list. You can manage the selection of the -default goal from within your makefile using the '.DEFAULT_GOAL' -variable (*note Other Special Variables: Special Variables.). - - You can also specify a different goal or goals with command line -arguments to 'make'. Use the name of the goal as an argument. If you -specify several goals, 'make' processes each of them in turn, in the -order you name them. - - Any target in the makefile may be specified as a goal (unless it -starts with '-' or contains an '=', in which case it will be parsed as a -switch or variable definition, respectively). Even targets not in the -makefile may be specified, if 'make' can find implicit rules that say -how to make them. - - 'Make' will set the special variable 'MAKECMDGOALS' to the list of -goals you specified on the command line. If no goals were given on the -command line, this variable is empty. Note that this variable should be -used only in special circumstances. - - An example of appropriate use is to avoid including '.d' files during -'clean' rules (*note Automatic Prerequisites::), so 'make' won't create -them only to immediately remove them again: - - sources = foo.c bar.c - - ifneq ($(MAKECMDGOALS),clean) - include $(sources:.c=.d) - endif - - One use of specifying a goal is if you want to compile only a part of -the program, or only one of several programs. Specify as a goal each -file that you wish to remake. For example, consider a directory -containing several programs, with a makefile that starts like this: - - .PHONY: all - all: size nm ld ar as - - If you are working on the program 'size', you might want to say -'make size' so that only the files of that program are recompiled. - - Another use of specifying a goal is to make files that are not -normally made. For example, there may be a file of debugging output, or -a version of the program that is compiled specially for testing, which -has a rule in the makefile but is not a prerequisite of the default -goal. - - Another use of specifying a goal is to run the recipe associated with -a phony target (*note Phony Targets::) or empty target (*note Empty -Target Files to Record Events: Empty Targets.). Many makefiles contain -a phony target named 'clean' which deletes everything except source -files. Naturally, this is done only if you request it explicitly with -'make clean'. Following is a list of typical phony and empty target -names. *Note Standard Targets::, for a detailed list of all the -standard target names which GNU software packages use. - -'all' - Make all the top-level targets the makefile knows about. - -'clean' - Delete all files that are normally created by running 'make'. - -'mostlyclean' - Like 'clean', but may refrain from deleting a few files that people - normally don't want to recompile. For example, the 'mostlyclean' - target for GCC does not delete 'libgcc.a', because recompiling it - is rarely necessary and takes a lot of time. - -'distclean' -'realclean' -'clobber' - Any of these targets might be defined to delete _more_ files than - 'clean' does. For example, this would delete configuration files - or links that you would normally create as preparation for - compilation, even if the makefile itself cannot create these files. - -'install' - Copy the executable file into a directory that users typically - search for commands; copy any auxiliary files that the executable - uses into the directories where it will look for them. - -'print' - Print listings of the source files that have changed. - -'tar' - Create a tar file of the source files. - -'shar' - Create a shell archive (shar file) of the source files. - -'dist' - Create a distribution file of the source files. This might be a - tar file, or a shar file, or a compressed version of one of the - above, or even more than one of the above. - -'TAGS' - Update a tags table for this program. - -'check' -'test' - Perform self tests on the program this makefile builds. - - -File: make.info, Node: Instead of Execution, Next: Avoiding Compilation, Prev: Goals, Up: Running - -9.3 Instead of Executing Recipes -================================ - -The makefile tells 'make' how to tell whether a target is up to date, -and how to update each target. But updating the targets is not always -what you want. Certain options specify other activities for 'make'. - -'-n' -'--just-print' -'--dry-run' -'--recon' - - "No-op". Causes 'make' to print the recipes that are needed to - make the targets up to date, but not actually execute them. Note - that some recipes are still executed, even with this flag (*note - How the 'MAKE' Variable Works: MAKE Variable.). Also any recipes - needed to update included makefiles are still executed (*note How - Makefiles Are Remade: Remaking Makefiles.). - -'-t' -'--touch' - - "Touch". Marks targets as up to date without actually changing - them. In other words, 'make' pretends to update the targets but - does not really change their contents; instead only their modified - times are updated. - -'-q' -'--question' - - "Question". Silently check whether the targets are up to date, but - do not execute recipes; the exit code shows whether any updates are - needed. - -'-W FILE' -'--what-if=FILE' -'--assume-new=FILE' -'--new-file=FILE' - - "What if". Each '-W' flag is followed by a file name. The given - files' modification times are recorded by 'make' as being the - present time, although the actual modification times remain the - same. You can use the '-W' flag in conjunction with the '-n' flag - to see what would happen if you were to modify specific files. - - With the '-n' flag, 'make' prints the recipe that it would normally -execute but usually does not execute it. - - With the '-t' flag, 'make' ignores the recipes in the rules and uses -(in effect) the command 'touch' for each target that needs to be remade. -The 'touch' command is also printed, unless '-s' or '.SILENT' is used. -For speed, 'make' does not actually invoke the program 'touch'. It does -the work directly. - - With the '-q' flag, 'make' prints nothing and executes no recipes, -but the exit status code it returns is zero if and only if the targets -to be considered are already up to date. If the exit status is one, -then some updating needs to be done. If 'make' encounters an error, the -exit status is two, so you can distinguish an error from a target that -is not up to date. - - It is an error to use more than one of these three flags in the same -invocation of 'make'. - - The '-n', '-t', and '-q' options do not affect recipe lines that -begin with '+' characters or contain the strings '$(MAKE)' or '${MAKE}'. -Note that only the line containing the '+' character or the strings -'$(MAKE)' or '${MAKE}' is run regardless of these options. Other lines -in the same rule are not run unless they too begin with '+' or contain -'$(MAKE)' or '${MAKE}' (*Note How the 'MAKE' Variable Works: MAKE -Variable.) - - The '-t' flag prevents phony targets (*note Phony Targets::) from -being updated, unless there are recipe lines beginning with '+' or -containing '$(MAKE)' or '${MAKE}'. - - The '-W' flag provides two features: - - * If you also use the '-n' or '-q' flag, you can see what 'make' - would do if you were to modify some files. - - * Without the '-n' or '-q' flag, when 'make' is actually executing - recipes, the '-W' flag can direct 'make' to act as if some files - had been modified, without actually running the recipes for those - files. - - Note that the options '-p' and '-v' allow you to obtain other -information about 'make' or about the makefiles in use (*note Summary of -Options: Options Summary.). - - -File: make.info, Node: Avoiding Compilation, Next: Overriding, Prev: Instead of Execution, Up: Running - -9.4 Avoiding Recompilation of Some Files -======================================== - -Sometimes you may have changed a source file but you do not want to -recompile all the files that depend on it. For example, suppose you add -a macro or a declaration to a header file that many other files depend -on. Being conservative, 'make' assumes that any change in the header -file requires recompilation of all dependent files, but you know that -they do not need to be recompiled and you would rather not waste the -time waiting for them to compile. - - If you anticipate the problem before changing the header file, you -can use the '-t' flag. This flag tells 'make' not to run the recipes in -the rules, but rather to mark the target up to date by changing its -last-modification date. You would follow this procedure: - - 1. Use the command 'make' to recompile the source files that really - need recompilation, ensuring that the object files are up-to-date - before you begin. - - 2. Make the changes in the header files. - - 3. Use the command 'make -t' to mark all the object files as up to - date. The next time you run 'make', the changes in the header - files will not cause any recompilation. - - If you have already changed the header file at a time when some files -do need recompilation, it is too late to do this. Instead, you can use -the '-o FILE' flag, which marks a specified file as "old" (*note Summary -of Options: Options Summary.). This means that the file itself will not -be remade, and nothing else will be remade on its account. Follow this -procedure: - - 1. Recompile the source files that need compilation for reasons - independent of the particular header file, with 'make -o - HEADERFILE'. If several header files are involved, use a separate - '-o' option for each header file. - - 2. Touch all the object files with 'make -t'. - - -File: make.info, Node: Overriding, Next: Testing, Prev: Avoiding Compilation, Up: Running - -9.5 Overriding Variables -======================== - -An argument that contains '=' specifies the value of a variable: 'V=X' -sets the value of the variable V to X. If you specify a value in this -way, all ordinary assignments of the same variable in the makefile are -ignored; we say they have been "overridden" by the command line -argument. - - The most common way to use this facility is to pass extra flags to -compilers. For example, in a properly written makefile, the variable -'CFLAGS' is included in each recipe that runs the C compiler, so a file -'foo.c' would be compiled something like this: - - cc -c $(CFLAGS) foo.c - - Thus, whatever value you set for 'CFLAGS' affects each compilation -that occurs. The makefile probably specifies the usual value for -'CFLAGS', like this: - - CFLAGS=-g - - Each time you run 'make', you can override this value if you wish. -For example, if you say 'make CFLAGS='-g -O'', each C compilation will -be done with 'cc -c -g -O'. (This also illustrates how you can use -quoting in the shell to enclose spaces and other special characters in -the value of a variable when you override it.) - - The variable 'CFLAGS' is only one of many standard variables that -exist just so that you can change them this way. *Note Variables Used -by Implicit Rules: Implicit Variables, for a complete list. - - You can also program the makefile to look at additional variables of -your own, giving the user the ability to control other aspects of how -the makefile works by changing the variables. - - When you override a variable with a command line argument, you can -define either a recursively-expanded variable or a simply-expanded -variable. The examples shown above make a recursively-expanded -variable; to make a simply-expanded variable, write ':=' or '::=' -instead of '='. But, unless you want to include a variable reference or -function call in the _value_ that you specify, it makes no difference -which kind of variable you create. - - There is one way that the makefile can change a variable that you -have overridden. This is to use the 'override' directive, which is a -line that looks like this: 'override VARIABLE = VALUE' (*note The -'override' Directive: Override Directive.). - diff --git a/doc/make.info-2 b/doc/make.info-2 index 8af29d7..186be0b 100644 --- a/doc/make.info-2 +++ b/doc/make.info-2 @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.6 from make.texi. +This is make.info, produced by makeinfo version 6.7 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make -Manual', for GNU 'make' version 4.3. + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free -Software Foundation, Inc. +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -29,7 +29,460 @@ START-INFO-DIR-ENTRY END-INFO-DIR-ENTRY  -File: make.info, Node: Testing, Next: Options Summary, Prev: Overriding, Up: Running +File: make.info, Node: Shell Function, Next: Guile Function, Prev: Make Control Functions, Up: Functions + +8.14 The 'shell' Function +========================= + +The 'shell' function is unlike any other function other than the +'wildcard' function (*note The Function 'wildcard': Wildcard Function.) +in that it communicates with the world outside of 'make'. + + The 'shell' function provides for 'make' the same facility that +backquotes ('`') provide in most shells: it does "command expansion". +This means that it takes as an argument a shell command and expands to +the output of the command. The only processing 'make' does on the +result is to convert each newline (or carriage-return / newline pair) to +a single space. If there is a trailing (carriage-return and) newline it +will simply be removed. + + The commands run by calls to the 'shell' function are run when the +function calls are expanded (*note How 'make' Reads a Makefile: Reading +Makefiles.). Because this function involves spawning a new shell, you +should carefully consider the performance implications of using the +'shell' function within recursively expanded variables vs. simply +expanded variables (*note The Two Flavors of Variables: Flavors.). + + An alternative to the 'shell' function is the '!=' assignment +operator; it provides a similar behavior but has subtle differences +(*note Setting Variables: Setting.). The '!=' assignment operator is +included in newer POSIX standards. + + After the 'shell' function or '!=' assignment operator is used, its +exit status is placed in the '.SHELLSTATUS' variable. + + Here are some examples of the use of the 'shell' function: + + contents := $(shell cat foo) + +sets 'contents' to the contents of the file 'foo', with a space (rather +than a newline) separating each line. + + files := $(shell echo *.c) + +sets 'files' to the expansion of '*.c'. Unless 'make' is using a very +strange shell, this has the same result as '$(wildcard *.c)' (as long as +at least one '.c' file exists). + + All variables that are marked as 'export' will also be passed to the +shell started by the 'shell' function. It is possible to create a +variable expansion loop: consider this 'makefile': + + export HI = $(shell echo hi) + all: ; @echo $$HI + + When 'make' wants to run the recipe it must add the variable HI to +the environment; to do so it must be expanded. The value of this +variable requires an invocation of the 'shell' function, and to invoke +it we must create its environment. Since HI is exported, we need to +expand it to create its environment. And so on. In this obscure case +'make' will use the value of the variable from the environment provided +to 'make', or else the empty string if there was none, rather than +looping or issuing an error. This is often what you want; for example: + + export PATH = $(shell echo /usr/local/bin:$$PATH) + + However, it would be simpler and more efficient to use a +simply-expanded variable here (':=') in the first place. + + +File: make.info, Node: Guile Function, Prev: Shell Function, Up: Functions + +8.15 The 'guile' Function +========================= + +If GNU 'make' is built with support for GNU Guile as an embedded +extension language then the 'guile' function will be available. The +'guile' function takes one argument which is first expanded by 'make' in +the normal fashion, then passed to the GNU Guile evaluator. The result +of the evaluator is converted into a string and used as the expansion of +the 'guile' function in the makefile. See *note GNU Guile Integration: +Guile Integration. for details on writing extensions to 'make' in Guile. + + You can determine whether GNU Guile support is available by checking +the '.FEATURES' variable for the word GUILE. + + +File: make.info, Node: Running, Next: Implicit Rules, Prev: Functions, Up: Top + +9 How to Run 'make' +******************* + +A makefile that says how to recompile a program can be used in more than +one way. The simplest use is to recompile every file that is out of +date. Usually, makefiles are written so that if you run 'make' with no +arguments, it does just that. + + But you might want to update only some of the files; you might want +to use a different compiler or different compiler options; you might +want just to find out which files are out of date without changing them. + + By giving arguments when you run 'make', you can do any of these +things and many others. + + The exit status of 'make' is always one of three values: +'0' + The exit status is zero if 'make' is successful. +'2' + The exit status is two if 'make' encounters any errors. It will + print messages describing the particular errors. +'1' + The exit status is one if you use the '-q' flag and 'make' + determines that some target is not already up to date. *Note + Instead of Executing Recipes: Instead of Execution. + +* Menu: + +* Makefile Arguments:: How to specify which makefile to use. +* Goals:: How to use goal arguments to specify which + parts of the makefile to use. +* Instead of Execution:: How to use mode flags to specify what + kind of thing to do with the recipes + in the makefile other than simply + execute them. +* Avoiding Compilation:: How to avoid recompiling certain files. +* Overriding:: How to override a variable to specify + an alternate compiler and other things. +* Testing:: How to proceed past some errors, to + test compilation. +* Temporary Files:: Where 'make' keeps its temporary files. +* Options Summary:: Summary of Options + + +File: make.info, Node: Makefile Arguments, Next: Goals, Prev: Running, Up: Running + +9.1 Arguments to Specify the Makefile +===================================== + +The way to specify the name of the makefile is with the '-f' or '--file' +option ('--makefile' also works). For example, '-f altmake' says to use +the file 'altmake' as the makefile. + + If you use the '-f' flag several times and follow each '-f' with an +argument, all the specified files are used jointly as makefiles. + + If you do not use the '-f' or '--file' flag, the default is to try +'GNUmakefile', 'makefile', and 'Makefile', in that order, and use the +first of these three which exists or can be made (*note Writing +Makefiles: Makefiles.). + + +File: make.info, Node: Goals, Next: Instead of Execution, Prev: Makefile Arguments, Up: Running + +9.2 Arguments to Specify the Goals +================================== + +The "goals" are the targets that 'make' should strive ultimately to +update. Other targets are updated as well if they appear as +prerequisites of goals, or prerequisites of prerequisites of goals, etc. + + By default, the goal is the first target in the makefile (not +counting targets that start with a period). Therefore, makefiles are +usually written so that the first target is for compiling the entire +program or programs they describe. If the first rule in the makefile +has several targets, only the first target in the rule becomes the +default goal, not the whole list. You can manage the selection of the +default goal from within your makefile using the '.DEFAULT_GOAL' +variable (*note Other Special Variables: Special Variables.). + + You can also specify a different goal or goals with command line +arguments to 'make'. Use the name of the goal as an argument. If you +specify several goals, 'make' processes each of them in turn, in the +order you name them. + + Any target in the makefile may be specified as a goal (unless it +starts with '-' or contains an '=', in which case it will be parsed as a +switch or variable definition, respectively). Even targets not in the +makefile may be specified, if 'make' can find implicit rules that say +how to make them. + + 'Make' will set the special variable 'MAKECMDGOALS' to the list of +goals you specified on the command line. If no goals were given on the +command line, this variable is empty. Note that this variable should be +used only in special circumstances. + + An example of appropriate use is to avoid including '.d' files during +'clean' rules (*note Automatic Prerequisites::), so 'make' won't create +them only to immediately remove them again: + + sources = foo.c bar.c + + ifeq (,$(filter clean,$(MAKECMDGOALS)) + include $(sources:.c=.d) + endif + + One use of specifying a goal is if you want to compile only a part of +the program, or only one of several programs. Specify as a goal each +file that you wish to remake. For example, consider a directory +containing several programs, with a makefile that starts like this: + + .PHONY: all + all: size nm ld ar as + + If you are working on the program 'size', you might want to say +'make size' so that only the files of that program are recompiled. + + Another use of specifying a goal is to make files that are not +normally made. For example, there may be a file of debugging output, or +a version of the program that is compiled specially for testing, which +has a rule in the makefile but is not a prerequisite of the default +goal. + + Another use of specifying a goal is to run the recipe associated with +a phony target (*note Phony Targets::) or empty target (*note Empty +Target Files to Record Events: Empty Targets.). Many makefiles contain +a phony target named 'clean' which deletes everything except source +files. Naturally, this is done only if you request it explicitly with +'make clean'. Following is a list of typical phony and empty target +names. *Note Standard Targets::, for a detailed list of all the +standard target names which GNU software packages use. + +'all' + Make all the top-level targets the makefile knows about. + +'clean' + Delete all files that are normally created by running 'make'. + +'mostlyclean' + Like 'clean', but may refrain from deleting a few files that people + normally don't want to recompile. For example, the 'mostlyclean' + target for GCC does not delete 'libgcc.a', because recompiling it + is rarely necessary and takes a lot of time. + +'distclean' +'realclean' +'clobber' + Any of these targets might be defined to delete _more_ files than + 'clean' does. For example, this would delete configuration files + or links that you would normally create as preparation for + compilation, even if the makefile itself cannot create these files. + +'install' + Copy the executable file into a directory that users typically + search for commands; copy any auxiliary files that the executable + uses into the directories where it will look for them. + +'print' + Print listings of the source files that have changed. + +'tar' + Create a tar file of the source files. + +'shar' + Create a shell archive (shar file) of the source files. + +'dist' + Create a distribution file of the source files. This might be a + tar file, or a shar file, or a compressed version of one of the + above, or even more than one of the above. + +'TAGS' + Update a tags table for this program. + +'check' +'test' + Perform self tests on the program this makefile builds. + + +File: make.info, Node: Instead of Execution, Next: Avoiding Compilation, Prev: Goals, Up: Running + +9.3 Instead of Executing Recipes +================================ + +The makefile tells 'make' how to tell whether a target is up to date, +and how to update each target. But updating the targets is not always +what you want. Certain options specify other activities for 'make'. + +'-n' +'--just-print' +'--dry-run' +'--recon' + + "No-op". Causes 'make' to print the recipes that are needed to + make the targets up to date, but not actually execute them. Note + that some recipes are still executed, even with this flag (*note + How the 'MAKE' Variable Works: MAKE Variable.). Also any recipes + needed to update included makefiles are still executed (*note How + Makefiles Are Remade: Remaking Makefiles.). + +'-t' +'--touch' + + "Touch". Marks targets as up to date without actually changing + them. In other words, 'make' pretends to update the targets but + does not really change their contents; instead only their modified + times are updated. + +'-q' +'--question' + + "Question". Silently check whether the targets are up to date, but + do not execute recipes; the exit code shows whether any updates are + needed. + +'-W FILE' +'--what-if=FILE' +'--assume-new=FILE' +'--new-file=FILE' + + "What if". Each '-W' flag is followed by a file name. The given + files' modification times are recorded by 'make' as being the + present time, although the actual modification times remain the + same. You can use the '-W' flag in conjunction with the '-n' flag + to see what would happen if you were to modify specific files. + + With the '-n' flag, 'make' prints the recipe that it would normally +execute but usually does not execute it. + + With the '-t' flag, 'make' ignores the recipes in the rules and uses +(in effect) the command 'touch' for each target that needs to be remade. +The 'touch' command is also printed, unless '-s' or '.SILENT' is used. +For speed, 'make' does not actually invoke the program 'touch'. It does +the work directly. + + With the '-q' flag, 'make' prints nothing and executes no recipes, +but the exit status code it returns is zero if and only if the targets +to be considered are already up to date. If the exit status is one, +then some updating needs to be done. If 'make' encounters an error, the +exit status is two, so you can distinguish an error from a target that +is not up to date. + + It is an error to use more than one of these three flags in the same +invocation of 'make'. + + The '-n', '-t', and '-q' options do not affect recipe lines that +begin with '+' characters or contain the strings '$(MAKE)' or '${MAKE}'. +Note that only the line containing the '+' character or the strings +'$(MAKE)' or '${MAKE}' is run regardless of these options. Other lines +in the same rule are not run unless they too begin with '+' or contain +'$(MAKE)' or '${MAKE}' (*Note How the 'MAKE' Variable Works: MAKE +Variable.) + + The '-t' flag prevents phony targets (*note Phony Targets::) from +being updated, unless there are recipe lines beginning with '+' or +containing '$(MAKE)' or '${MAKE}'. + + The '-W' flag provides two features: + + * If you also use the '-n' or '-q' flag, you can see what 'make' + would do if you were to modify some files. + + * Without the '-n' or '-q' flag, when 'make' is actually executing + recipes, the '-W' flag can direct 'make' to act as if some files + had been modified, without actually running the recipes for those + files. + + Note that the options '-p' and '-v' allow you to obtain other +information about 'make' or about the makefiles in use (*note Summary of +Options: Options Summary.). + + +File: make.info, Node: Avoiding Compilation, Next: Overriding, Prev: Instead of Execution, Up: Running + +9.4 Avoiding Recompilation of Some Files +======================================== + +Sometimes you may have changed a source file but you do not want to +recompile all the files that depend on it. For example, suppose you add +a macro or a declaration to a header file that many other files depend +on. Being conservative, 'make' assumes that any change in the header +file requires recompilation of all dependent files, but you know that +they do not need to be recompiled and you would rather not waste the +time waiting for them to compile. + + If you anticipate the problem before changing the header file, you +can use the '-t' flag. This flag tells 'make' not to run the recipes in +the rules, but rather to mark the target up to date by changing its +last-modification date. You would follow this procedure: + + 1. Use the command 'make' to recompile the source files that really + need recompilation, ensuring that the object files are up-to-date + before you begin. + + 2. Make the changes in the header files. + + 3. Use the command 'make -t' to mark all the object files as up to + date. The next time you run 'make', the changes in the header + files will not cause any recompilation. + + If you have already changed the header file at a time when some files +do need recompilation, it is too late to do this. Instead, you can use +the '-o FILE' flag, which marks a specified file as "old" (*note Summary +of Options: Options Summary.). This means that the file itself will not +be remade, and nothing else will be remade on its account. Follow this +procedure: + + 1. Recompile the source files that need compilation for reasons + independent of the particular header file, with 'make -o + HEADERFILE'. If several header files are involved, use a separate + '-o' option for each header file. + + 2. Touch all the object files with 'make -t'. + + +File: make.info, Node: Overriding, Next: Testing, Prev: Avoiding Compilation, Up: Running + +9.5 Overriding Variables +======================== + +An argument that contains '=' specifies the value of a variable: 'V=X' +sets the value of the variable V to X. If you specify a value in this +way, all ordinary assignments of the same variable in the makefile are +ignored; we say they have been "overridden" by the command line +argument. + + The most common way to use this facility is to pass extra flags to +compilers. For example, in a properly written makefile, the variable +'CFLAGS' is included in each recipe that runs the C compiler, so a file +'foo.c' would be compiled something like this: + + cc -c $(CFLAGS) foo.c + + Thus, whatever value you set for 'CFLAGS' affects each compilation +that occurs. The makefile probably specifies the usual value for +'CFLAGS', like this: + + CFLAGS=-g + + Each time you run 'make', you can override this value if you wish. +For example, if you say 'make CFLAGS='-g -O'', each C compilation will +be done with 'cc -c -g -O'. (This also illustrates how you can use +quoting in the shell to enclose spaces and other special characters in +the value of a variable when you override it.) + + The variable 'CFLAGS' is only one of many standard variables that +exist just so that you can change them this way. *Note Variables Used +by Implicit Rules: Implicit Variables, for a complete list. + + You can also program the makefile to look at additional variables of +your own, giving the user the ability to control other aspects of how +the makefile works by changing the variables. + + When you override a variable with a command line argument, you can +define either a recursively-expanded variable or a simply-expanded +variable. The examples shown above make a recursively-expanded +variable; to make a simply-expanded variable, write ':=' or '::=' +instead of '='. But, unless you want to include a variable reference or +function call in the _value_ that you specify, it makes no difference +which kind of variable you create. + + There is one way that the makefile can change a variable that you +have overridden. This is to use the 'override' directive, which is a +line that looks like this: 'override VARIABLE = VALUE' (*note The +'override' Directive: Override Directive.). + + +File: make.info, Node: Testing, Next: Temporary Files, Prev: Overriding, Up: Running 9.6 Testing the Compilation of a Program ======================================== @@ -65,9 +518,36 @@ correct them all before the next attempt to compile. This is why Emacs' 'M-x compile' command passes the '-k' flag by default.  -File: make.info, Node: Options Summary, Prev: Testing, Up: Running +File: make.info, Node: Temporary Files, Next: Options Summary, Prev: Testing, Up: Running + +9.7 Temporary Files +=================== + +In some situations, 'make' will need to create its own temporary files. +These files must not be disturbed while 'make' is running, including all +recursively-invoked instances of 'make'. + + If the environment variable 'MAKE_TMPDIR' is set then all temporary +files created by 'make' will be placed there. -9.7 Summary of Options + If 'MAKE_TMPDIR' is not set, then the standard location for temporary +files for the current operating system will be used. For POSIX systems +this will be the location set in the 'TMPDIR' environment variable, or +else the system's default location (e.g., '/tmp') is used. On Windows, +first 'TMP' then 'TEMP' will be checked, then 'TMPDIR', and finally the +system default temporary file location will be used. + + Note that this directory must already exist or 'make' will fail: +'make' will not attempt to create it. + + These variables _cannot_ be set from within a makefile: GNU 'make' +must have access to this location before it begins reading the +makefiles. + + +File: make.info, Node: Options Summary, Prev: Temporary Files, Up: Running + +9.8 Summary of Options ====================== Here is a table of all the options 'make' understands: @@ -142,6 +622,15 @@ Here is a table of all the options 'make' understands: enable this option. This option also enables 'basic' messages. + 'p (print)' + Prints the recipe to be executed, even when the recipe is + normally silent (due to '.SILENT' or '@'). Also prints the + makefile name and line number where the recipe was defined. + + 'w (why)' + Explains why each target must be remade by showing which + prerequisites are more up to date than the target. + 'n (none)' Disable all debugging currently enabled. If additional debugging flags are encountered after this they will still @@ -181,7 +670,11 @@ Here is a table of all the options 'make' understands: Specifies a directory DIR to search for included makefiles. *Note Including Other Makefiles: Include. If several '-I' options are used to specify several directories, the directories are searched - in the order specified. + in the order specified. If the directory DIR is a single dash + ('-') then any already-specified directories up to that point + (including the default directory paths) will be discarded. You can + examine the current list of directories to be searched via the + '.INCLUDE_DIRS' variable. '-j [JOBS]' '--jobs[=JOBS]' @@ -192,6 +685,15 @@ Here is a table of all the options 'make' understands: information on how recipes are run. Note that this option is ignored on MS-DOS. +'--jobserver-style=[STYLE]' + Chooses the style of jobserver to use. This option only has effect + if parallel builds are enabled (*note Parallel Execution: + Parallel.). On POSIX systems STYLE can be one of 'fifo' (the + default) or 'pipe'. On Windows the only acceptable STYLE is 'sem' + (the default). This option is useful if you need to use an older + versions of GNU 'make', or a different tool that requires a + specific jobserver style. + '-k' '--keep-going' Continue as much as possible after an error. While the target that @@ -308,6 +810,48 @@ Here is a table of all the options 'make' understands: top-level 'make' via 'MAKEFLAGS' (*note Recursive Use of 'make': Recursion.) or if you set '-k' in 'MAKEFLAGS' in your environment. +'--shuffle[=MODE]' + + This option enables a form of fuzz-testing of prerequisite + relationships. When parallelism is enabled ('-j') the order in + which targets are built becomes less deterministic. If + prerequisites are not fully declared in the makefile this can lead + to intermittent and hard-to-track-down build failures. + + The '--shuffle' option forces 'make' to purposefully reorder goals + and prerequisites so target/prerequisite relationships still hold, + but ordering of prerequisites of a given target are reordered as + described below. + + The order in which prerequisites are listed in automatic variables + is not changed by this option. + + The '.NOTPARALLEL' pseudo-target disables shuffling for that + makefile. Also any prerequisite list which contains '.WAIT' will + not be shuffled. *Note Disabling Parallel Execution: Parallel + Disable. + + The '--shuffle=' option accepts these values: + + 'random' + Choose a random seed for the shuffle. This is the default if + no mode is specified. The chosen seed is also provided to + sub-'make' commands. The seed is included in error messages + so that it can be re-used in future runs to reproduce the + problem or verify that it has been resolved. + + 'reverse' + Reverse the order of goals and prerequisites, rather than a + random shuffle. + + 'SEED' + Use 'random' shuffle initialized with the specified seed + value. The SEED is an integer. + + 'none' + Disable shuffling. This negates any previous '--shuffle' + options. + '-t' '--touch' @@ -317,11 +861,8 @@ Here is a table of all the options 'make' understands: *Note Instead of Executing Recipes: Instead of Execution. '--trace' - Show tracing information for 'make' execution. Prints the entire - recipe to be executed, even for recipes that are normally silent - (due to '.SILENT' or '@'). Also prints the makefile name and line - number where the recipe was defined, and information on why the - target is being rebuilt. + Show tracing information for 'make' execution. Using '--trace' is + shorthand for '--debug=print,why'. '-v' '--version' @@ -521,8 +1062,9 @@ Compiling C programs Compiling C++ programs 'N.o' is made automatically from 'N.cc', 'N.cpp', or 'N.C' with a recipe of the form '$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c'. We - encourage you to use the suffix '.cc' for C++ source files instead - of '.C'. + encourage you to use the suffix '.cc' or '.cpp' for C++ source + files instead of '.C' to better support case-insensitive file + systems. Compiling Pascal programs 'N.o' is made automatically from 'N.p' with the recipe '$(PC) @@ -551,9 +1093,9 @@ Preprocessing Fortran and Ratfor programs '$(FC) $(FFLAGS) $(RFLAGS) -F'. Compiling Modula-2 programs - 'N.sym' is made from 'N.def' with a recipe of the form '$(M2C) - $(M2FLAGS) $(DEFFLAGS)'. 'N.o' is made from 'N.mod'; the form is: - '$(M2C) $(M2FLAGS) $(MODFLAGS)'. + 'N.sym' is made from 'N.def' with a recipe of the form + '$(M2C) $(M2FLAGS) $(DEFFLAGS)'. 'N.o' is made from 'N.mod'; the + form is: '$(M2C) $(M2FLAGS) $(MODFLAGS)'. Assembling and preprocessing assembler programs 'N.o' is made automatically from 'N.s' by running the assembler, @@ -563,8 +1105,8 @@ Assembling and preprocessing assembler programs preprocessor, 'cpp'. The precise recipe is '$(CPP) $(CPPFLAGS)'. Linking a single object file - 'N' is made automatically from 'N.o' by running the linker (usually - called 'ld') via the C compiler. The precise recipe used is + 'N' is made automatically from 'N.o' by running the C compiler to + link the program. The precise recipe used is '$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'. This rule does the right thing for a simple program with only one @@ -883,33 +1425,44 @@ files. But intermediate files are treated differently in two ways. not exist. If an ordinary file B does not exist, and 'make' considers a target that depends on B, it invariably creates B and then updates the target from B. But if B is an intermediate file, then 'make' can leave -well enough alone. It won't bother updating B, or the ultimate target, -unless some prerequisite of B is newer than that target or there is some -other reason to update that target. +well enough alone: it won't create B unless one of its prerequisites is +out of date. This means the target depending on B won't be rebuilt +either, unless there is some other reason to update that target: for +example the target doesn't exist or a different prerequisite is newer +than the target. The second difference is that if 'make' _does_ create B in order to update something else, it deletes B later on after it is no longer needed. Therefore, an intermediate file which did not exist before 'make' also does not exist after 'make'. 'make' reports the deletion to -you by printing a 'rm -f' command showing which file it is deleting. - - Ordinarily, a file cannot be intermediate if it is mentioned in the -makefile as a target or prerequisite. However, you can explicitly mark -a file as intermediate by listing it as a prerequisite of the special -target '.INTERMEDIATE'. This takes effect even if the file is mentioned -explicitly in some other way. - - You can prevent automatic deletion of an intermediate file by marking -it as a "secondary" file. To do this, list it as a prerequisite of the -special target '.SECONDARY'. When a file is secondary, 'make' will not -create the file merely because it does not already exist, but 'make' -does not automatically delete the file. Marking a file as secondary -also marks it as intermediate. - - You can list the target pattern of an implicit rule (such as '%.o') -as a prerequisite of the special target '.PRECIOUS' to preserve -intermediate files made by implicit rules whose target patterns match -that file's name; see *note Interrupts::. +you by printing a 'rm' command showing which file it is deleting. + + You can explicitly mark a file as intermediate by listing it as a +prerequisite of the special target '.INTERMEDIATE'. This takes effect +even if the file is mentioned explicitly in some other way. + + A file cannot be intermediate if it is mentioned in the makefile as a +target or prerequisite, so one way to avoid the deletion of intermediate +files is by adding it as a prerequisite to some target. However, doing +so can cause make to do extra work when searching pattern rules (*note +Implicit Rule Search Algorithm: Implicit Rule Search.). + + As an alternative, listing a file as a prerequisite of the special +target '.NOTINTERMEDIATE' forces it to not be considered intermediate +(just as any other mention of the file will do). Also, listing the +target pattern of a pattern rule as a prerequisite of '.NOTINTERMEDIATE' +ensures that no targets generated using that pattern rule are considered +intermediate. + + You can disable intermediate files completely in your makefile by +providing '.NOTINTERMEDIATE' as a target with no prerequisites: in that +case it applies to every file in the makefile. + + If you do not want 'make' to create a file merely because it does not +already exist, but you also do not want 'make' to automatically delete +the file, you can mark it as a "secondary" file. To do this, list it as +a prerequisite of the special target '.SECONDARY'. Marking a file as +secondary also marks it as intermediate. A chain can involve more than two implicit rules. For example, it is possible to make a file 'foo' from 'RCS/foo.y,v' by running RCS, Yacc @@ -1014,9 +1567,19 @@ will choose the "best fit" rule. *Note How Patterns Match: Pattern Match. Pattern rules may have more than one target; however, every target -must contain a '%' character. Pattern rules are always treated as -grouped targets (*note Multiple Targets in a Rule: Multiple Targets.) -regardless of whether they use the ':' or '&:' separator. +must contain a '%' character. Multiple target patterns in pattern rules +are always treated as grouped targets (*note Multiple Targets in a Rule: +Multiple Targets.) regardless of whether they use the ':' or '&:' +separator. + + There is one exception: if a pattern target is out of date or does +not exist and the makefile does not need to build it, then it will not +cause the other targets to be considered out of date. Note that this +historical exception will be removed in future versions of GNU 'make' +and should not be relied on. If this situation is detected 'make' will +generate a warning _pattern recipe did not update peer target_; however, +'make' cannot detect all such situations. Please be sure that your +recipe updates _all_ the target patterns when it runs.  File: make.info, Node: Pattern Examples, Next: Automatic Variables, Prev: Pattern Intro, Up: Pattern Rules @@ -1116,6 +1679,15 @@ prerequisite lists. prerequisites will be included. For prerequisites which are archive members, only the named member is used (*note Archives::). + '$?' is useful even in explicit rules when you wish to operate on + only the prerequisites that have changed. For example, suppose + that an archive named 'lib' is supposed to contain copies of + several object files. This rule copies just the changed object + files into the archive: + + lib: foo.o bar.o lose.o win.o + ar r lib $? + '$^' The names of all the prerequisites, with spaces between them. For prerequisites which are archive members, only the named member is @@ -1157,14 +1729,6 @@ prerequisite lists. If the target name in an explicit rule does not end with a recognized suffix, '$*' is set to the empty string for that rule. - '$?' is useful even in explicit rules when you wish to operate on -only the prerequisites that have changed. For example, suppose that an -archive named 'lib' is supposed to contain copies of several object -files. This rule copies just the changed object files into the archive: - - lib: foo.o bar.o lose.o win.o - ar r lib $? - Of the variables listed above, four have values that are single file names, and three have values that are lists of file names. These seven have variants that get just the file's directory name or just the file @@ -1263,9 +1827,10 @@ the file name 'src/car'. target pattern that matches the file name, _and_ all prerequisites in that rule either exist or can be built. The rules you write take precedence over those that are built in. Note however, that a rule -whose prerequisites actually exist or are mentioned always takes -priority over a rule with prerequisites that must be made by chaining -other implicit rules. +which can be satisfied without chaining other implicit rules (for +example, one which has no prerequisites or its prerequisites already +exist or are mentioned) always takes priority over a rule with +prerequisites that must be made by chaining other implicit rules. It is possible that more than one pattern rule will meet these criteria. In that case, 'make' will choose the rule with the shortest @@ -1571,7 +2136,8 @@ rule. c. Test whether all the prerequisites exist or ought to exist. (If a file name is mentioned in the makefile as a target or as - an explicit prerequisite, then we say it ought to exist.) + an explicit prerequisite of target T, then we say it ought to + exist.) If all prerequisites exist or ought to exist, or there are no prerequisites, then this rule applies. @@ -1592,7 +2158,14 @@ rule. e. If all prerequisites exist, ought to exist, or can be made by implicit rules, then this rule applies. - 7. If no implicit rule applies, the rule for '.DEFAULT', if any, + 7. If no pattern rule has been found then try step 5 and step 6 again + with a modified definition of "ought to exist": if a filename is + mentioned as a target or as an explicit prerequisite of _any_ + target, then it ought to exist. This check is only present for + backward-compatibility with older versions of GNU make: we don't + recommend relying on it. + + 8. If no implicit rule applies, the rule for '.DEFAULT', if any, applies. In that case, give T the same recipe that '.DEFAULT' has. Otherwise, there is no recipe for T. @@ -2218,7 +2791,7 @@ arguments are as follows: 'max_args' The maximum number of arguments the function will accept. Must be between 0 and 255. GNU 'make' will check this and fail before - invoking 'func_ptr' if the function was invoked with too few + invoking 'func_ptr' if the function was invoked with too many arguments. If the value is 0, then any number of arguments is accepted. If the value is greater than 0, then it must be greater than or equal to 'min_args'. @@ -2288,11 +2861,13 @@ string returned from the 'make' 'gmk_expand' function _must_ be freed 'gmk_alloc' Return a pointer to a newly-allocated buffer. This function will always return a valid pointer; if not enough memory is available - 'make' will exit. + 'make' will exit. 'gmk_alloc' does not initialize allocated + memory. 'gmk_free' Free a buffer returned to you by 'make'. Once the 'gmk_free' - function returns the string will no longer be valid. + function returns the string will no longer be valid. If NULL is + passed to 'gmk_free', no operation is performed.  File: make.info, Node: Loaded Object Example, Prev: Loaded Object API, Up: Loading Objects @@ -2306,7 +2881,6 @@ to take a prefix as an argument. First we can write the function in a file 'mk_temp.c': #include - #include #include #include #include @@ -2343,14 +2917,15 @@ file 'mk_temp.c': } int - mk_temp_gmk_setup () + mk_temp_gmk_setup (const gmk_floc *floc) { + printf ("mk_temp plugin loaded from %s:%lu\n", floc->filenm, floc->lineno); /* Register the function with make name "mk-temp". */ gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1); return 1; } - Next, we will write a makefile that can build this shared object, + Next, we will write a 'Makefile' that can build this shared object, load it, and use it: all: @@ -2359,7 +2934,7 @@ load it, and use it: load mk_temp.so mk_temp.so: mk_temp.c - $(CC) -shared -fPIC -o $ $< + $(CC) -shared -fPIC -o $@ $< On MS-Windows, due to peculiarities of how shared objects are produced, the compiler needs to scan the "import library" produced when @@ -2369,11 +2944,12 @@ a shared object will look on Windows like this (assuming the API version is 1): mk_temp.dll: mk_temp.c - $(CC) -shared -o $ $< -lgnumake-1 + $(CC) -shared -o $@ $< -lgnumake-1 Now when you run 'make' you'll see something like: $ make + mk_temp plugin loaded from Makefile:4 cc -shared -fPIC -o mk_temp.so mk_temp.c Temporary filename: tmpfile.A7JEwd @@ -2417,23 +2993,22 @@ of active jobs across recursive invocations. The actual implementation of the jobserver varies across different operating systems, but some fundamental aspects are always true. - First, only command lines that 'make' understands to be recursive -invocations of 'make' (*note How the 'MAKE' Variable Works: MAKE -Variable.) will have access to the jobserver. When writing makefiles -you must be sure to mark the command as recursive (most commonly by -prefixing the command line with the '+' indicator (*note Recursive Use -of 'make': Recursion.). - - Second, 'make' will provide information necessary for accessing the + First, 'make' will provide information necessary for accessing the jobserver through the environment to its children, in the 'MAKEFLAGS' environment variable. Tools which want to participate in the jobserver -protocol will need to parse this environment variable, as described in -subsequent sections. +protocol will need to parse this environment variable and find the word +starting with '--jobserver-auth='. The value of this option will +describe how to communicate with the jobserver. The interpretation of +this value is described in the sections below. + + Be aware that the 'MAKEFLAGS' variable may contain multiple instances +of the '--jobserver-auth=' option. Only the _last_ instance is +relevant. - Third, every command 'make' starts has one implicit job slot reserved -for it before it starts. Any tool which wants to participate in the -jobserver protocol should assume it can always run one job without -having to contact the jobserver at all. + Second, every command 'make' starts has one implicit job slot +reserved for it before it starts. Any tool which wants to participate +in the jobserver protocol should assume it can always run one job +without having to contact the jobserver at all. Finally, it's critical that tools that participate in the jobserver protocol return the exact number of slots they obtained from the @@ -2467,49 +3042,71 @@ File: make.info, Node: POSIX Jobserver, Next: Windows Jobserver, Prev: Job Sl 13.1.1 POSIX Jobserver Interaction ---------------------------------- -On POSIX systems the jobserver is implemented as a simple UNIX pipe. -The pipe will be pre-loaded with one single-character token for each -available job. To obtain an extra slot you must read a single character -from the jobserver pipe; to release a slot you must write a single -character back into the jobserver pipe. Note that the read side of the -jobserver pipe is set to "blocking" mode. - - To access the pipe you must parse the 'MAKEFLAGS' variable and look -for the argument string '--jobserver-auth=R,W' where 'R' and 'W' are +On POSIX systems the jobserver is implemented in one of two ways: on +systems that support it, GNU 'make' will create a named pipe and use +that for the jobserver. In this case the auth option will have the form +'--jobserver-auth=fifo:PATH' where 'PATH' is the pathname of the named +pipe. To access the jobserver you should open the named pipe path and +read/write to it as described below. + + If the system doesn't support named pipes, or if the user provided +the '--jobserver-style' option and specified 'pipe', then the jobserver +will be implemented as a simple UNIX pipe. In this case the auth option +will have the form '--jobserver-auth=R,W' where 'R' and 'W' are non-negative integers representing file descriptors: 'R' is the read -file descriptor and 'W' is the write file descriptor. +file descriptor and 'W' is the write file descriptor. If either or both +of these file descriptors are negative, it means the jobserver is +disabled for this process. + + When using a simple pipe, only command lines that 'make' understands +to be recursive invocations of 'make' (*note How the 'MAKE' Variable +Works: MAKE Variable.) will have access to the jobserver. When writing +makefiles you must be sure to mark the command as recursive (most +commonly by prefixing the command line with the '+' indicator (*note +Recursive Use of 'make': Recursion.). Note that the read side of the +jobserver pipe is set to "blocking" mode. This should not be changed. + + In both implementations of the jobserver, the pipe will be pre-loaded +with one single-character token for each available job. To obtain an +extra slot you must read a single character from the jobserver; to +release a slot you must write a single character back into the +jobserver. It's important that when you release the job slot, you write back the -same character you read from the pipe for that slot. Don't assume that -all tokens are the same character; different characters may have -different meanings to GNU 'make'. The order is not important, since -'make' has no idea in what order jobs will complete anyway. +same character you read. Don't assume that all tokens are the same +character; different characters may have different meanings to GNU +'make'. The order is not important, since 'make' has no idea in what +order jobs will complete anyway. There are various error conditions you must consider to ensure your implementation is robust: - * Usually you will have a command-line argument controlling the - parallel operation of your tool. Consider whether your tool should - detect situations where both the jobserver and the command-line - argument are specified, and how it should react. + * If you have a command-line argument controlling the parallel + operation of your tool, consider whether your tool should detect + situations where both the jobserver and the command-line argument + are specified, and how it should react. + + * If your tool does not recognize the format of the + '--jobserver-auth' string, it should assume the jobserver is using + a different style and it cannot connect. - * If your tool determines that the '--jobserver-auth' option is - available in 'MAKEFLAGS' but that the file descriptors specified + * If your tool determines that the '--jobserver-auth' option + references a simple pipe but that the file descriptors specified are closed, this means that the calling 'make' process did not think that your tool was a recursive 'make' invocation (e.g., the command line was not prefixed with a '+' character). You should notify your users of this situation. - * Your tool should also examine the first word of the 'MAKEFLAGS' - variable and look for the character 'n'. If this character is - present then 'make' was invoked with the '-n' option and your tool - should stop without performing any operations. - * Your tool should be sure to write back the tokens it read, even under error conditions. This includes not only errors in your tool but also outside influences such as interrupts ('SIGINT'), etc. You may want to install signal handlers to manage this write-back. + * Your tool may also examine the first word of the 'MAKEFLAGS' + variable and look for the character 'n'. If this character is + present then 'make' was invoked with the '-n' option and your tool + may want to stop without performing any operations. +  File: make.info, Node: Windows Jobserver, Prev: POSIX Jobserver, Up: Job Slots @@ -2526,6 +3123,8 @@ look for the argument string '--jobserver-auth=NAME' where 'NAME' is the name of the named semaphore. Use this name with 'OpenSemaphore' to create a handle to the semaphore. + The only valid style for '--jobserver-style' is 'sem'. + There are various error conditions you must consider to ensure your implementation is robust: @@ -2555,7 +3154,7 @@ characters that set color, or even change the location of the cursor. If the output is not going to a terminal then these special control characters are not emitted so that they don't corrupt log files, etc. - The '--output-sync' (*note Output During Parallel Output: Parallel + The '--output-sync' (*note Output During Parallel Execution: Parallel Output.) option will defeat the terminal detection. When output synchronization is enabled GNU 'make' arranges for all command output to be written to a file, so that its output can be written as a block @@ -3341,7 +3940,7 @@ or 'lispdir'. Most compilers other than GCC do not look for header files in directory '/usr/local/include'. So installing the header files - this way is only useful with GCC. Sometimes this is not a problem + this way is only useful with GCC. Sometimes this is not a problem because some libraries are only really intended to work with GCC. But some libraries are intended to work with other compilers. They should install their header files in two places, one specified by @@ -3349,7 +3948,7 @@ or 'lispdir'. 'oldincludedir' The directory for installing '#include' header files for use with - compilers other than GCC. This should normally be '/usr/include'. + compilers other than GCC. This should normally be '/usr/include'. (If you are using Autoconf, you can write it as '@oldincludedir@'.) The Makefile commands should check whether the value of @@ -3930,6 +4529,7 @@ Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and 'define VARIABLE =' 'define VARIABLE :=' 'define VARIABLE ::=' +'define VARIABLE :::=' 'define VARIABLE +=' 'define VARIABLE ?=' 'endef' @@ -4121,6 +4721,10 @@ Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and VARIABLE. *Note The 'flavor' Function: Flavor Function. +'$(let VAR [VAR ...],WORDS,TEXT)' + Evaluate TEXT with the VARs bound to the words in WORDS. + *Note The 'let' Function: Let Function. + '$(foreach VAR,WORDS,TEXT)' Evaluate TEXT with VAR bound to each word in WORDS, and concatenate the results. @@ -4145,6 +4749,13 @@ Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and of the last CONDITION. *Note Functions for Conditionals: Conditional Functions. +'$(intcmp LHS,RHS[,LT-PART[,EQ-PART[,GT-PART]]])' + Compare LHS and RHS numerically; substitute the expansion of + LT-PART, EQ-PART, or GT-PART depending on whether the left-hand + side is less-than, equal-to, or greater-than the right-hand side, + respectively. + *Note Functions for Conditionals: Conditional Functions. + '$(call VAR,PARAM,...)' Evaluate the variable VAR replacing any references to '$(1)', '$(2)' with the first, second, etc. PARAM values. @@ -5125,7 +5736,7 @@ Appendix D GNU Free Documentation License the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See - . + . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered @@ -5221,12 +5832,12 @@ Index of Concepts * $, in variable name: Computed Names. (line 6) * $, in variable reference: Reference. (line 6) * %, in pattern rules: Pattern Intro. (line 9) -* %, quoting in patsubst: Text Functions. (line 26) +* %, quoting in patsubst: Text Functions. (line 27) * %, quoting in static pattern: Static Usage. (line 37) * %, quoting in vpath: Selective Search. (line 39) * %, quoting with \ (backslash): Selective Search. (line 39) * %, quoting with \ (backslash) <1>: Static Usage. (line 37) -* %, quoting with \ (backslash) <2>: Text Functions. (line 26) +* %, quoting with \ (backslash) <2>: Text Functions. (line 27) * * (wildcard character): Wildcards. (line 6) * +, and define: Canned Recipes. (line 49) * +, and recipe execution: Instead of Execution. @@ -5235,127 +5846,132 @@ Index of Concepts * +=: Appending. (line 6) * +=, expansion: Reading Makefiles. (line 34) * +=, expansion <1>: Reading Makefiles. (line 34) -* ,v (RCS file extension): Catalogue of Rules. (line 163) +* ,v (RCS file extension): Catalogue of Rules. (line 167) * - (in recipes): Errors. (line 19) * -, and define: Canned Recipes. (line 49) * --always-make: Options Summary. (line 15) * --assume-new: Instead of Execution. (line 41) -* --assume-new <1>: Options Summary. (line 285) -* --assume-new, and recursion: Options/Recursion. (line 22) +* --assume-new <1>: Options Summary. (line 346) +* --assume-new, and recursion: Options/Recursion. (line 30) * --assume-old: Avoiding Compilation. (line 6) -* --assume-old <1>: Options Summary. (line 164) -* --assume-old, and recursion: Options/Recursion. (line 22) -* --check-symlink-times: Options Summary. (line 145) +* --assume-old <1>: Options Summary. (line 186) +* --assume-old, and recursion: Options/Recursion. (line 30) +* --check-symlink-times: Options Summary. (line 167) * --debug: Options Summary. (line 43) * --directory: Recursion. (line 20) * --directory <1>: Options Summary. (line 26) * --directory, and --print-directory: -w Option. (line 20) -* --directory, and recursion: Options/Recursion. (line 22) +* --directory, and recursion: Options/Recursion. (line 30) * --dry-run: Echoing. (line 18) * --dry-run <1>: Instead of Execution. (line 14) -* --dry-run <2>: Options Summary. (line 155) -* --environment-overrides: Options Summary. (line 85) -* --eval: Options Summary. (line 90) +* --dry-run <2>: Options Summary. (line 177) +* --environment-overrides: Options Summary. (line 94) +* --eval: Options Summary. (line 99) * --file: Makefile Names. (line 23) * --file <1>: Makefile Arguments. (line 6) -* --file <2>: Options Summary. (line 98) -* --file, and recursion: Options/Recursion. (line 22) -* --help: Options Summary. (line 104) +* --file <2>: Options Summary. (line 107) +* --file, and recursion: Options/Recursion. (line 30) +* --help: Options Summary. (line 113) * --ignore-errors: Errors. (line 30) -* --ignore-errors <1>: Options Summary. (line 109) +* --ignore-errors <1>: Options Summary. (line 118) * --include-dir: Include. (line 53) -* --include-dir <1>: Options Summary. (line 114) +* --include-dir <1>: Options Summary. (line 123) * --jobs: Parallel. (line 6) -* --jobs <1>: Options Summary. (line 121) -* --jobs, and recursion: Options/Recursion. (line 25) +* --jobs <1>: Options Summary. (line 134) +* --jobs, and recursion: Options/Recursion. (line 33) +* --jobserver-auth: Job Slots. (line 21) +* --jobserver-style: Options Summary. (line 142) +* --jobserver-style <1>: POSIX Jobserver. (line 13) +* --jobserver-style for Windows: Windows Jobserver. (line 16) * --just-print: Echoing. (line 18) * --just-print <1>: Instead of Execution. (line 14) -* --just-print <2>: Options Summary. (line 154) +* --just-print <2>: Options Summary. (line 176) * --keep-going: Errors. (line 46) * --keep-going <1>: Testing. (line 16) -* --keep-going <2>: Options Summary. (line 130) +* --keep-going <2>: Options Summary. (line 152) * --load-average: Parallel. (line 35) -* --load-average <1>: Options Summary. (line 137) +* --load-average <1>: Options Summary. (line 159) * --makefile: Makefile Names. (line 23) * --makefile <1>: Makefile Arguments. (line 6) -* --makefile <2>: Options Summary. (line 99) +* --makefile <2>: Options Summary. (line 108) * --max-load: Parallel. (line 35) -* --max-load <1>: Options Summary. (line 138) +* --max-load <1>: Options Summary. (line 160) * --new-file: Instead of Execution. (line 41) -* --new-file <1>: Options Summary. (line 284) -* --new-file, and recursion: Options/Recursion. (line 22) -* --no-builtin-rules: Options Summary. (line 210) -* --no-builtin-variables: Options Summary. (line 223) -* --no-keep-going: Options Summary. (line 239) +* --new-file <1>: Options Summary. (line 345) +* --new-file, and recursion: Options/Recursion. (line 30) +* --no-builtin-rules: Options Summary. (line 232) +* --no-builtin-variables: Options Summary. (line 245) +* --no-keep-going: Options Summary. (line 261) * --no-print-directory: -w Option. (line 20) -* --no-print-directory <1>: Options Summary. (line 276) +* --no-print-directory <1>: Options Summary. (line 337) * --old-file: Avoiding Compilation. (line 6) -* --old-file <1>: Options Summary. (line 163) -* --old-file, and recursion: Options/Recursion. (line 22) +* --old-file <1>: Options Summary. (line 185) +* --old-file, and recursion: Options/Recursion. (line 30) * --output-sync: Parallel Output. (line 11) -* --output-sync <1>: Options Summary. (line 172) -* --print-data-base: Options Summary. (line 188) -* --print-directory: Options Summary. (line 268) +* --output-sync <1>: Options Summary. (line 194) +* --print-data-base: Options Summary. (line 210) +* --print-directory: Options Summary. (line 329) * --print-directory, and --directory: -w Option. (line 20) * --print-directory, and recursion: -w Option. (line 20) * --print-directory, disabling: -w Option. (line 20) * --question: Instead of Execution. (line 32) -* --question <1>: Options Summary. (line 202) +* --question <1>: Options Summary. (line 224) * --quiet: Echoing. (line 24) -* --quiet <1>: Options Summary. (line 233) +* --quiet <1>: Options Summary. (line 255) * --recon: Echoing. (line 18) * --recon <1>: Instead of Execution. (line 14) -* --recon <2>: Options Summary. (line 156) +* --recon <2>: Options Summary. (line 178) +* --shuffle: Options Summary. (line 269) * --silent: Echoing. (line 24) -* --silent <1>: Options Summary. (line 232) -* --stop: Options Summary. (line 240) +* --silent <1>: Options Summary. (line 254) +* --stop: Options Summary. (line 262) * --touch: Instead of Execution. (line 24) -* --touch <1>: Options Summary. (line 248) +* --touch <1>: Options Summary. (line 312) * --touch, and recursion: MAKE Variable. (line 35) -* --trace: Options Summary. (line 255) -* --version: Options Summary. (line 263) -* --warn-undefined-variables: Options Summary. (line 293) +* --trace: Options Summary. (line 319) +* --version: Options Summary. (line 324) +* --warn-undefined-variables: Options Summary. (line 354) * --what-if: Instead of Execution. (line 41) -* --what-if <1>: Options Summary. (line 283) +* --what-if <1>: Options Summary. (line 344) * -b: Options Summary. (line 9) * -B: Options Summary. (line 14) * -C: Recursion. (line 20) * -C <1>: Options Summary. (line 25) * -C, and -w: -w Option. (line 20) -* -C, and recursion: Options/Recursion. (line 22) +* -C, and recursion: Options/Recursion. (line 30) * -d: Options Summary. (line 33) -* -e: Options Summary. (line 84) -* -E: Options Summary. (line 89) +* -e: Options Summary. (line 93) +* -E: Options Summary. (line 98) * -e (shell flag): Automatic Prerequisites. (line 65) * -f: Makefile Names. (line 23) * -f <1>: Makefile Arguments. (line 6) -* -f <2>: Options Summary. (line 97) -* -f, and recursion: Options/Recursion. (line 22) -* -h: Options Summary. (line 103) +* -f <2>: Options Summary. (line 106) +* -f, and recursion: Options/Recursion. (line 30) +* -h: Options Summary. (line 112) * -I: Include. (line 53) * -i: Errors. (line 30) -* -i <1>: Options Summary. (line 108) -* -I <1>: Options Summary. (line 113) +* -i <1>: Options Summary. (line 117) +* -I <1>: Options Summary. (line 122) * -j: Parallel. (line 6) -* -j <1>: Options Summary. (line 120) +* -j <1>: Options Summary. (line 133) * -j, and archive update: Archive Pitfalls. (line 6) -* -j, and recursion: Options/Recursion. (line 25) +* -j, and recursion: Options/Recursion. (line 33) * -k: Errors. (line 46) * -k <1>: Testing. (line 16) -* -k <2>: Options Summary. (line 129) -* -l: Options Summary. (line 136) -* -L: Options Summary. (line 144) +* -k <2>: Options Summary. (line 151) +* -l: Options Summary. (line 158) +* -L: Options Summary. (line 166) * -l (library search): Libraries/Search. (line 6) * -l (load average): Parallel. (line 35) * -m: Options Summary. (line 10) @@ -5366,33 +5982,33 @@ Index of Concepts * -n: Echoing. (line 18) * -n <1>: Instead of Execution. (line 14) -* -n <2>: Options Summary. (line 153) +* -n <2>: Options Summary. (line 175) * -O: Parallel Output. (line 11) * -o: Avoiding Compilation. (line 6) -* -o <1>: Options Summary. (line 162) -* -O <1>: Options Summary. (line 171) -* -o, and recursion: Options/Recursion. (line 22) -* -p: Options Summary. (line 187) +* -o <1>: Options Summary. (line 184) +* -O <1>: Options Summary. (line 193) +* -o, and recursion: Options/Recursion. (line 30) +* -p: Options Summary. (line 209) * -q: Instead of Execution. (line 32) -* -q <1>: Options Summary. (line 201) -* -r: Options Summary. (line 209) -* -R: Options Summary. (line 222) +* -q <1>: Options Summary. (line 223) +* -r: Options Summary. (line 231) +* -R: Options Summary. (line 244) * -s: Echoing. (line 24) -* -s <1>: Options Summary. (line 231) -* -S: Options Summary. (line 238) +* -s <1>: Options Summary. (line 253) +* -S: Options Summary. (line 260) * -t: Instead of Execution. (line 24) -* -t <1>: Options Summary. (line 247) +* -t <1>: Options Summary. (line 311) * -t, and recursion: MAKE Variable. (line 35) -* -v: Options Summary. (line 262) +* -v: Options Summary. (line 323) * -W: Instead of Execution. (line 41) -* -w: Options Summary. (line 267) -* -W <1>: Options Summary. (line 282) +* -w: Options Summary. (line 328) +* -W <1>: Options Summary. (line 343) * -w, and -C: -w Option. (line 20) -* -W, and recursion: Options/Recursion. (line 22) +* -W, and recursion: Options/Recursion. (line 30) * -w, and recursion: -w Option. (line 20) * -w, disabling: -w Option. (line 20) * .a (archives): Archive Suffix Rules. @@ -5400,47 +6016,53 @@ Index of Concepts * .c: Catalogue of Rules. (line 35) * .C: Catalogue of Rules. (line 39) * .cc: Catalogue of Rules. (line 39) -* .ch: Catalogue of Rules. (line 149) +* .ch: Catalogue of Rules. (line 153) * .cpp: Catalogue of Rules. (line 39) * .d: Automatic Prerequisites. (line 80) -* .def: Catalogue of Rules. (line 71) -* .dvi: Catalogue of Rules. (line 149) -* .f: Catalogue of Rules. (line 49) -* .F: Catalogue of Rules. (line 49) -* .info: Catalogue of Rules. (line 156) -* .l: Catalogue of Rules. (line 121) +* .def: Catalogue of Rules. (line 73) +* .dvi: Catalogue of Rules. (line 153) +* .f: Catalogue of Rules. (line 51) +* .F: Catalogue of Rules. (line 51) +* .info: Catalogue of Rules. (line 160) +* .l: Catalogue of Rules. (line 125) * .LIBPATTERNS, and link libraries: Libraries/Search. (line 6) -* .ln: Catalogue of Rules. (line 143) -* .mod: Catalogue of Rules. (line 71) +* .ln: Catalogue of Rules. (line 147) +* .mod: Catalogue of Rules. (line 73) +* .NOTPARALLEL special target: Parallel Disable. (line 16) * .o: Catalogue of Rules. (line 35) -* .o <1>: Catalogue of Rules. (line 83) +* .o <1>: Catalogue of Rules. (line 86) * .ONESHELL, use of: One Shell. (line 6) -* .p: Catalogue of Rules. (line 45) -* .PRECIOUS intermediate files: Chained Rules. (line 56) -* .r: Catalogue of Rules. (line 49) -* .s: Catalogue of Rules. (line 76) -* .S: Catalogue of Rules. (line 79) -* .sh: Catalogue of Rules. (line 178) +* .p: Catalogue of Rules. (line 47) +* .r: Catalogue of Rules. (line 51) +* .s: Catalogue of Rules. (line 79) +* .S: Catalogue of Rules. (line 82) +* .sh: Catalogue of Rules. (line 182) * .SHELLFLAGS, value of: Choosing the Shell. (line 6) -* .sym: Catalogue of Rules. (line 71) -* .tex: Catalogue of Rules. (line 149) -* .texi: Catalogue of Rules. (line 156) -* .texinfo: Catalogue of Rules. (line 156) -* .txinfo: Catalogue of Rules. (line 156) -* .w: Catalogue of Rules. (line 149) -* .web: Catalogue of Rules. (line 149) -* .y: Catalogue of Rules. (line 117) +* .sym: Catalogue of Rules. (line 73) +* .tex: Catalogue of Rules. (line 153) +* .texi: Catalogue of Rules. (line 160) +* .texinfo: Catalogue of Rules. (line 160) +* .txinfo: Catalogue of Rules. (line 160) +* .w: Catalogue of Rules. (line 153) +* .WAIT special target: Parallel Disable. (line 51) +* .web: Catalogue of Rules. (line 153) +* .y: Catalogue of Rules. (line 121) * :: rules (double-colon): Double-Colon. (line 6) -* ::=: Flavors. (line 56) +* :::=: Immediate Assignment. + (line 6) +* :::= <1>: Setting. (line 6) +* ::=: Simple Assignment. (line 9) * ::= <1>: Setting. (line 6) -* :=: Flavors. (line 56) +* :=: Simple Assignment. (line 9) * := <1>: Setting. (line 6) -* =: Flavors. (line 10) +* =: Recursive Assignment. + (line 6) * = <1>: Setting. (line 6) * =, expansion: Reading Makefiles. (line 34) * ? (wildcard character): Wildcards. (line 6) -* ?=: Flavors. (line 135) +* ?=: Conditional Assignment. + (line 6) * ?= <1>: Setting. (line 6) * ?=, expansion: Reading Makefiles. (line 34) * @ (in recipes): Echoing. (line 6) @@ -5451,9 +6073,9 @@ Index of Concepts (line 6) * \ (backslash), to quote %: Selective Search. (line 39) * \ (backslash), to quote % <1>: Static Usage. (line 37) -* \ (backslash), to quote % <2>: Text Functions. (line 26) +* \ (backslash), to quote % <2>: Text Functions. (line 27) * __.SYMDEF: Archive Symbols. (line 6) -* ~ (tilde): Wildcards. (line 11) +* ~ (tilde): Wildcards. (line 16) * abspath: File Name Functions. (line 120) * algorithm for directory search: Search Algorithm. (line 6) * all (standard target): Goals. (line 73) @@ -5466,11 +6088,11 @@ Index of Concepts * archive, and parallel execution: Archive Pitfalls. (line 6) * archive, suffix rule for: Archive Suffix Rules. (line 6) -* Arg list too long: Options/Recursion. (line 58) +* Arg list too long: Options/Recursion. (line 66) * arguments of functions: Syntax of Functions. (line 6) -* as: Catalogue of Rules. (line 76) +* as: Catalogue of Rules. (line 79) * as <1>: Implicit Variables. (line 43) -* assembly, rule to compile: Catalogue of Rules. (line 76) +* assembly, rule to compile: Catalogue of Rules. (line 79) * automatic generation of prerequisites: Include. (line 51) * automatic generation of prerequisites <1>: Automatic Prerequisites. (line 6) @@ -5482,7 +6104,7 @@ Index of Concepts (line 6) * backslash (\), to quote %: Selective Search. (line 39) * backslash (\), to quote % <1>: Static Usage. (line 37) -* backslash (\), to quote % <2>: Text Functions. (line 26) +* backslash (\), to quote % <2>: Text Functions. (line 27) * backslash (\), to quote newlines: Splitting Lines. (line 6) * backslashes in pathnames and wildcard expansion: Wildcard Pitfall. (line 31) @@ -5506,24 +6128,25 @@ Index of Concepts * clean target <1>: Cleanup. (line 11) * cleaning up: Cleanup. (line 6) * clobber (standard target): Goals. (line 87) -* co: Catalogue of Rules. (line 163) +* co: Catalogue of Rules. (line 167) * co <1>: Implicit Variables. (line 66) * combining rules by prerequisite: Combine By Prerequisite. (line 6) * command expansion: Shell Function. (line 6) * command line variable definitions, and recursion: Options/Recursion. - (line 17) + (line 25) * command line variables: Overriding. (line 6) * commands, sequences of: Canned Recipes. (line 6) * comments, in makefile: Makefile Contents. (line 41) * comments, in recipes: Recipe Syntax. (line 29) * compatibility: Features. (line 6) -* compatibility in exporting: Variables/Recursion. (line 104) +* compatibility in exporting: Variables/Recursion. (line 94) * compilation, testing: Testing. (line 6) * computed variable name: Computed Names. (line 6) * conditional expansion: Conditional Functions. (line 6) -* conditional variable assignment: Flavors. (line 135) +* conditional variable assignment: Conditional Assignment. + (line 6) * conditionals: Conditionals. (line 6) * continuation lines: Simple Makefile. (line 41) * controlling make: Make Control Functions. @@ -5531,14 +6154,14 @@ Index of Concepts * conventions for makefiles: Makefile Conventions. (line 6) * convert guile types: Guile Types. (line 6) -* ctangle: Catalogue of Rules. (line 149) +* ctangle: Catalogue of Rules. (line 153) * ctangle <1>: Implicit Variables. (line 103) -* cweave: Catalogue of Rules. (line 149) +* cweave: Catalogue of Rules. (line 153) * cweave <1>: Implicit Variables. (line 97) -* data base of make rules: Options Summary. (line 188) +* data base of make rules: Options Summary. (line 210) * deducing recipes (implicit rules): make Deduces. (line 6) * default directories for included makefiles: Include. (line 53) -* default goal: How Make Works. (line 11) +* default goal: How Make Works. (line 12) * default goal <1>: Rules. (line 11) * default makefile name: Makefile Names. (line 6) * default rules, last-resort: Last Resort. (line 6) @@ -5559,6 +6182,7 @@ Index of Concepts * directory search (VPATH), and recipes: Recipes/Search. (line 6) * directory search algorithm: Search Algorithm. (line 6) * directory search, traditional (GPATH): Search Algorithm. (line 42) +* disabling parallel execution: Parallel Disable. (line 6) * dist (standard target): Goals. (line 107) * distclean (standard target): Goals. (line 85) * dollar sign ($), in function call: Syntax of Functions. (line 6) @@ -5567,8 +6191,8 @@ Index of Concepts * dollar sign ($), in variable reference: Reference. (line 6) * DOS, choosing a shell in: Choosing the Shell. (line 38) * double-colon rules: Double-Colon. (line 6) -* duplicate words, removing: Text Functions. (line 155) -* E2BIG: Options/Recursion. (line 58) +* duplicate words, removing: Text Functions. (line 156) +* E2BIG: Options/Recursion. (line 66) * echoing of recipes: Echoing. (line 6) * editor: Introduction. (line 22) * Emacs (M-x compile): Errors. (line 61) @@ -5593,14 +6217,14 @@ Index of Concepts * exit status of make: Running. (line 18) * expansion, secondary: Secondary Expansion. (line 6) * explicit rule, definition of: Makefile Contents. (line 10) -* explicit rule, expansion: Reading Makefiles. (line 93) +* explicit rule, expansion: Reading Makefiles. (line 103) * explicit rules, secondary expansion of: Secondary Expansion. - (line 104) + (line 103) * exporting variables: Variables/Recursion. (line 6) * extensions, Guile: Guile Integration. (line 6) * extensions, load directive: load Directive. (line 6) * extensions, loading: Loading Objects. (line 6) -* f77: Catalogue of Rules. (line 49) +* f77: Catalogue of Rules. (line 51) * f77 <1>: Implicit Variables. (line 57) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) @@ -5627,16 +6251,18 @@ Index of Concepts * files, avoiding recompilation of: Avoiding Compilation. (line 6) * files, intermediate: Chained Rules. (line 16) -* filtering out words: Text Functions. (line 133) -* filtering words: Text Functions. (line 115) -* finding strings: Text Functions. (line 104) +* filtering out words: Text Functions. (line 134) +* filtering words: Text Functions. (line 116) +* finding strings: Text Functions. (line 105) * flags: Options Summary. (line 6) * flags for compilers: Implicit Variables. (line 6) * flavor of variable: Flavor Function. (line 6) * flavors of variables: Flavors. (line 6) * FORCE: Force Targets. (line 6) * force targets: Force Targets. (line 6) -* Fortran, rule to compile: Catalogue of Rules. (line 49) +* Fortran, rule to compile: Catalogue of Rules. (line 51) +* function arguments, special characters in: Syntax of Functions. + (line 40) * functions: Functions. (line 6) * functions, for controlling make: Make Control Functions. (line 6) @@ -5650,11 +6276,11 @@ Index of Concepts * generating prerequisites automatically: Include. (line 51) * generating prerequisites automatically <1>: Automatic Prerequisites. (line 6) -* get: Catalogue of Rules. (line 172) +* get: Catalogue of Rules. (line 176) * get <1>: Implicit Variables. (line 69) * globbing (wildcards): Wildcards. (line 6) -* goal: How Make Works. (line 11) -* goal, default: How Make Works. (line 11) +* goal: How Make Works. (line 12) +* goal, default: How Make Works. (line 12) * goal, default <1>: Rules. (line 11) * goal, how to specify: Goals. (line 6) * grouped targets: Multiple Targets. (line 61) @@ -5662,31 +6288,33 @@ Index of Concepts * Guile <1>: Guile Integration. (line 6) * Guile example: Guile Example. (line 6) * guile, conversion of types: Guile Types. (line 6) -* home directory: Wildcards. (line 11) +* home directory: Wildcards. (line 16) * IEEE Standard 1003.2: Overview. (line 13) -* ifdef, expansion: Reading Makefiles. (line 83) -* ifeq, expansion: Reading Makefiles. (line 83) -* ifndef, expansion: Reading Makefiles. (line 83) -* ifneq, expansion: Reading Makefiles. (line 83) +* ifdef, expansion: Reading Makefiles. (line 93) +* ifeq, expansion: Reading Makefiles. (line 93) +* ifndef, expansion: Reading Makefiles. (line 93) +* ifneq, expansion: Reading Makefiles. (line 93) +* immediate variable assignment: Immediate Assignment. + (line 6) * implicit rule: Implicit Rules. (line 6) * implicit rule, and directory search: Implicit/Search. (line 6) * implicit rule, and VPATH: Implicit/Search. (line 6) * implicit rule, definition of: Makefile Contents. (line 16) -* implicit rule, expansion: Reading Makefiles. (line 93) +* implicit rule, expansion: Reading Makefiles. (line 103) * implicit rule, how to use: Using Implicit. (line 6) * implicit rule, introduction to: make Deduces. (line 6) * implicit rule, predefined: Catalogue of Rules. (line 6) * implicit rule, search algorithm: Implicit Rule Search. (line 6) * implicit rules, secondary expansion of: Secondary Expansion. - (line 144) + (line 143) * included makefiles, default directories: Include. (line 53) * including (MAKEFILES variable): MAKEFILES Variable. (line 6) * including (MAKEFILE_LIST variable): Special Variables. (line 8) * including other makefiles: Include. (line 6) * incompatibilities: Missing. (line 6) * independent targets: Multiple Targets. (line 14) -* Info, rule to format: Catalogue of Rules. (line 156) +* Info, rule to format: Catalogue of Rules. (line 160) * inheritance, suppressing: Suppressing Inheritance. (line 6) * input during parallel execution: Parallel Input. (line 6) @@ -5695,11 +6323,11 @@ Index of Concepts * installations, staged: DESTDIR. (line 6) * interface for loaded objects: Loaded Object API. (line 6) * intermediate files: Chained Rules. (line 16) -* intermediate files, preserving: Chained Rules. (line 46) +* intermediate files, preserving: Chained Rules. (line 63) * intermediate targets, explicit: Special Targets. (line 48) * interrupt: Interrupts. (line 6) * job slots: Parallel. (line 6) -* job slots, and recursion: Options/Recursion. (line 25) +* job slots, and recursion: Options/Recursion. (line 33) * job slots, sharing: Job Slots. (line 6) * jobs, limiting based on load: Parallel. (line 35) * jobserver: Job Slots. (line 16) @@ -5708,22 +6336,22 @@ Index of Concepts * joining lists of words: File Name Functions. (line 89) * killing (interruption): Interrupts. (line 6) * last-resort default rules: Last Resort. (line 6) -* ld: Catalogue of Rules. (line 83) -* lex: Catalogue of Rules. (line 121) +* ld: Catalogue of Rules. (line 86) +* lex: Catalogue of Rules. (line 125) * lex <1>: Implicit Variables. (line 73) -* Lex, rule to run: Catalogue of Rules. (line 121) +* Lex, rule to run: Catalogue of Rules. (line 125) * libraries for linking, directory search: Libraries/Search. (line 6) * library archive, suffix rule for: Archive Suffix Rules. (line 6) * limiting jobs based on load: Parallel. (line 35) * link libraries, and directory search: Libraries/Search. (line 6) * link libraries, patterns matching: Libraries/Search. (line 6) -* linking, predefined rule for: Catalogue of Rules. (line 83) -* lint: Catalogue of Rules. (line 143) +* linking, predefined rule for: Catalogue of Rules. (line 86) +* lint: Catalogue of Rules. (line 147) * lint <1>: Implicit Variables. (line 80) -* lint, rule to run: Catalogue of Rules. (line 143) -* list of all prerequisites: Automatic Variables. (line 62) -* list of changed prerequisites: Automatic Variables. (line 52) +* lint, rule to run: Catalogue of Rules. (line 147) +* list of all prerequisites: Automatic Variables. (line 71) +* list of changed prerequisites: Automatic Variables. (line 62) * load average: Parallel. (line 35) * load directive: load Directive. (line 6) * loaded object API: Loaded Object API. (line 6) @@ -5734,10 +6362,11 @@ Index of Concepts * loaded objects, remaking of: Remaking Loaded Objects. (line 6) * long lines, splitting: Splitting Lines. (line 6) -* loops in variable expansion: Flavors. (line 44) +* loops in variable expansion: Recursive Assignment. + (line 40) * lpr (shell command): Wildcard Examples. (line 21) * lpr (shell command) <1>: Empty Targets. (line 25) -* m2c: Catalogue of Rules. (line 71) +* m2c: Catalogue of Rules. (line 73) * m2c <1>: Implicit Variables. (line 60) * macro: Using Variables. (line 10) * make depend: Automatic Prerequisites. @@ -5765,8 +6394,9 @@ Index of Concepts * makefiles, and MAKEFILE_LIST variable: Special Variables. (line 8) * makefiles, and special variables: Special Variables. (line 6) * makefiles, parsing: Parsing Makefiles. (line 6) -* makeinfo: Catalogue of Rules. (line 156) +* makeinfo: Catalogue of Rules. (line 160) * makeinfo <1>: Implicit Variables. (line 84) +* MAKE_TMPDIR: Temporary Files. (line 10) * match-anything rule: Match-Anything Rules. (line 6) * match-anything rule, used to override: Overriding Makefiles. @@ -5774,7 +6404,7 @@ Index of Concepts * missing features: Missing. (line 6) * mistakes with wildcards: Wildcard Pitfall. (line 6) * modified variable reference: Substitution Refs. (line 6) -* Modula-2, rule to compile: Catalogue of Rules. (line 71) +* Modula-2, rule to compile: Catalogue of Rules. (line 73) * mostlyclean (standard target): Goals. (line 79) * multi-line variable definition: Multi-Line. (line 6) * multiple rules for one target: Multiple Rules. (line 6) @@ -5789,6 +6419,7 @@ Index of Concepts (line 6) * nondirectory part: File Name Functions. (line 26) * normal prerequisites: Prerequisite Types. (line 6) +* not intermediate targets, explicit: Special Targets. (line 54) * obj: Variables Simplify. (line 20) * OBJ: Variables Simplify. (line 20) * objects: Variables Simplify. (line 14) @@ -5799,34 +6430,35 @@ Index of Concepts * old-fashioned suffix rules: Suffix Rules. (line 6) * options: Options Summary. (line 6) * options, and recursion: Options/Recursion. (line 6) -* options, setting from environment: Options/Recursion. (line 81) -* options, setting in makefiles: Options/Recursion. (line 81) +* options, setting from environment: Options/Recursion. (line 89) +* options, setting in makefiles: Options/Recursion. (line 89) * order of pattern rules: Pattern Match. (line 30) * order-only prerequisites: Prerequisite Types. (line 6) * origin of variable: Origin Function. (line 6) * output during parallel execution: Parallel Output. (line 6) -* output during parallel execution <1>: Options Summary. (line 172) +* output during parallel execution <1>: Options Summary. (line 194) * overriding makefiles: Overriding Makefiles. (line 6) * overriding variables with arguments: Overriding. (line 6) * overriding with override: Override Directive. (line 6) * parallel execution: Parallel. (line 6) * parallel execution, and archive update: Archive Pitfalls. (line 6) +* parallel execution, disabling: Parallel Disable. (line 6) * parallel execution, input during: Parallel Input. (line 6) * parallel execution, output during: Parallel Output. (line 6) -* parallel execution, output during <1>: Options Summary. (line 172) -* parallel execution, overriding: Special Targets. (line 141) +* parallel execution, output during <1>: Options Summary. (line 194) +* parallel execution, overriding: Special Targets. (line 172) * parallel output to terminal: Terminal Output. (line 6) * parsing makefiles: Parsing Makefiles. (line 6) * parts of makefile rule: Rule Introduction. (line 6) -* Pascal, rule to compile: Catalogue of Rules. (line 45) +* Pascal, rule to compile: Catalogue of Rules. (line 47) * pattern rule: Pattern Intro. (line 6) -* pattern rule, expansion: Reading Makefiles. (line 93) +* pattern rule, expansion: Reading Makefiles. (line 103) * pattern rules, order of: Pattern Match. (line 30) * pattern rules, static (not implicit): Static Pattern. (line 6) * pattern rules, static, syntax of: Static Usage. (line 6) * pattern-specific variables: Pattern-specific. (line 6) -* pc: Catalogue of Rules. (line 45) +* pc: Catalogue of Rules. (line 47) * pc <1>: Implicit Variables. (line 63) * phony targets: Phony Targets. (line 6) * phony targets and recipe execution: Instead of Execution. @@ -5835,20 +6467,20 @@ Index of Concepts * plugin_is_GPL_compatible: Loaded Object API. (line 31) * portability: Features. (line 6) * POSIX: Overview. (line 13) -* POSIX <1>: Options/Recursion. (line 61) -* POSIX-conforming mode, setting: Special Targets. (line 156) +* POSIX <1>: Options/Recursion. (line 69) +* POSIX-conforming mode, setting: Special Targets. (line 192) * post-installation commands: Install Command Categories. (line 6) * pre-installation commands: Install Command Categories. (line 6) * precious targets: Special Targets. (line 32) -* predefined rules and variables, printing: Options Summary. (line 188) +* predefined rules and variables, printing: Options Summary. (line 210) * prefix, adding: File Name Functions. (line 78) * prerequisite: Rules. (line 6) * prerequisite pattern, implicit: Pattern Intro. (line 22) * prerequisite pattern, static (not implicit): Static Usage. (line 30) * prerequisite types: Prerequisite Types. (line 6) -* prerequisite, expansion: Reading Makefiles. (line 93) +* prerequisite, expansion: Reading Makefiles. (line 103) * prerequisites: Rule Syntax. (line 47) * prerequisites, and automatic variables: Automatic Variables. (line 17) @@ -5856,15 +6488,14 @@ Index of Concepts * prerequisites, automatic generation <1>: Automatic Prerequisites. (line 6) * prerequisites, introduction to: Rule Introduction. (line 8) -* prerequisites, list of all: Automatic Variables. (line 62) -* prerequisites, list of changed: Automatic Variables. (line 52) +* prerequisites, list of all: Automatic Variables. (line 71) +* prerequisites, list of changed: Automatic Variables. (line 62) * prerequisites, normal: Prerequisite Types. (line 6) * prerequisites, order-only: Prerequisite Types. (line 6) * prerequisites, varying (static pattern): Static Pattern. (line 6) -* preserving intermediate files: Chained Rules. (line 46) +* preserving intermediate files: Chained Rules. (line 63) * preserving with .PRECIOUS: Special Targets. (line 32) -* preserving with .PRECIOUS <1>: Chained Rules. (line 56) -* preserving with .SECONDARY: Special Targets. (line 54) +* preserving with .SECONDARY: Special Targets. (line 64) * print (standard target): Goals. (line 98) * print target: Wildcard Examples. (line 21) * print target <1>: Empty Targets. (line 25) @@ -5879,21 +6510,21 @@ Index of Concepts * processing a makefile: How Make Works. (line 6) * question mode: Instead of Execution. (line 32) -* quoting %, in patsubst: Text Functions. (line 26) +* quoting %, in patsubst: Text Functions. (line 27) * quoting %, in static pattern: Static Usage. (line 37) * quoting %, in vpath: Selective Search. (line 39) * quoting newline, in makefile: Simple Makefile. (line 41) * quoting newline, in recipes: Splitting Recipe Lines. (line 6) -* Ratfor, rule to compile: Catalogue of Rules. (line 49) -* RCS, rule to extract from: Catalogue of Rules. (line 163) +* Ratfor, rule to compile: Catalogue of Rules. (line 51) +* RCS, rule to extract from: Catalogue of Rules. (line 167) * reading from a file: File Function. (line 6) * reading makefiles: Reading Makefiles. (line 6) * README: Makefile Names. (line 9) * realclean (standard target): Goals. (line 86) * realpath: File Name Functions. (line 113) * recipe: Simple Makefile. (line 74) -* recipe execution, single invocation: Special Targets. (line 149) +* recipe execution, single invocation: Special Targets. (line 185) * recipe lines, single shell: One Shell. (line 6) * recipe syntax: Recipe Syntax. (line 6) * recipe, execution: Execution. (line 6) @@ -5924,35 +6555,35 @@ Index of Concepts (line 6) * recording events with empty targets: Empty Targets. (line 6) * recursion: Recursion. (line 6) -* recursion, and -C: Options/Recursion. (line 22) -* recursion, and -f: Options/Recursion. (line 22) -* recursion, and -j: Options/Recursion. (line 25) -* recursion, and -o: Options/Recursion. (line 22) +* recursion, and -C: Options/Recursion. (line 30) +* recursion, and -f: Options/Recursion. (line 30) +* recursion, and -j: Options/Recursion. (line 33) +* recursion, and -o: Options/Recursion. (line 30) * recursion, and -t: MAKE Variable. (line 35) -* recursion, and -W: Options/Recursion. (line 22) +* recursion, and -W: Options/Recursion. (line 30) * recursion, and -w: -w Option. (line 20) * recursion, and command line variable definitions: Options/Recursion. - (line 17) + (line 25) * recursion, and environment: Variables/Recursion. (line 6) * recursion, and MAKE variable: MAKE Variable. (line 6) * recursion, and MAKEFILES variable: MAKEFILES Variable. (line 15) * recursion, and options: Options/Recursion. (line 6) * recursion, and printing directories: -w Option. (line 6) * recursion, and variables: Variables/Recursion. (line 6) -* recursion, level of: Variables/Recursion. (line 114) +* recursion, level of: Variables/Recursion. (line 122) * recursive variable expansion: Using Variables. (line 6) * recursive variable expansion <1>: Flavors. (line 6) * recursively expanded variables: Flavors. (line 6) * reference to variables: Reference. (line 6) * reference to variables <1>: Advanced. (line 6) -* relinking: How Make Works. (line 46) +* relinking: How Make Works. (line 47) * remaking loaded objects: Remaking Loaded Objects. (line 6) * remaking makefiles: Remaking Makefiles. (line 6) * removal of target files: Errors. (line 63) * removal of target files <1>: Interrupts. (line 6) -* removing duplicate words: Text Functions. (line 155) -* removing targets on failure: Special Targets. (line 71) +* removing duplicate words: Text Functions. (line 156) +* removing targets on failure: Special Targets. (line 101) * removing whitespace from split lines: Splitting Lines. (line 40) * removing, to clean up: Cleanup. (line 6) * reporting bugs: Bugs. (line 6) @@ -5984,8 +6615,8 @@ Index of Concepts (line 6) * rule, with multiple targets: Multiple Targets. (line 6) * rules, and $: Rule Syntax. (line 33) -* s. (SCCS file prefix): Catalogue of Rules. (line 172) -* SCCS, rule to extract from: Catalogue of Rules. (line 172) +* s. (SCCS file prefix): Catalogue of Rules. (line 176) +* SCCS, rule to extract from: Catalogue of Rules. (line 176) * search algorithm, implicit rule: Implicit Rule Search. (line 6) * search path for prerequisites (VPATH): Directory Search. (line 6) @@ -5993,23 +6624,23 @@ Index of Concepts (line 6) * search path for prerequisites (VPATH), and link libraries: Libraries/Search. (line 6) -* searching for strings: Text Functions. (line 104) +* searching for strings: Text Functions. (line 105) * secondary expansion: Secondary Expansion. (line 6) * secondary expansion and explicit rules: Secondary Expansion. - (line 104) + (line 103) * secondary expansion and implicit rules: Secondary Expansion. - (line 144) + (line 143) * secondary expansion and static pattern rules: Secondary Expansion. - (line 136) -* secondary files: Chained Rules. (line 46) -* secondary targets: Special Targets. (line 54) + (line 135) +* secondary files: Chained Rules. (line 63) +* secondary targets: Special Targets. (line 64) * sed (shell command): Automatic Prerequisites. (line 72) -* selecting a word: Text Functions. (line 159) -* selecting word lists: Text Functions. (line 168) +* selecting a word: Text Functions. (line 160) +* selecting word lists: Text Functions. (line 169) * sequences of commands: Canned Recipes. (line 6) -* setting options from environment: Options/Recursion. (line 81) -* setting options in makefiles: Options/Recursion. (line 81) +* setting options from environment: Options/Recursion. (line 89) +* setting options in makefiles: Options/Recursion. (line 89) * setting variables: Setting. (line 6) * several rules for one target: Multiple Rules. (line 6) * several targets in a rule: Multiple Targets. (line 6) @@ -6019,8 +6650,8 @@ Index of Concepts * shell variables, setting in recipes: Execution. (line 12) * shell wildcards (in include): Include. (line 13) * shell, choosing the: Choosing the Shell. (line 6) -* SHELL, exported value: Variables/Recursion. (line 23) -* SHELL, import from environment: Environment. (line 37) +* SHELL, exported value: Variables/Recursion. (line 21) +* SHELL, import from environment: Environment. (line 36) * shell, in DOS and Windows: Choosing the Shell. (line 38) * SHELL, MS-DOS specifics: Choosing the Shell. (line 44) * SHELL, value of: Choosing the Shell. (line 6) @@ -6029,10 +6660,12 @@ Index of Concepts * simple makefile: Simple Makefile. (line 6) * simple variable expansion: Using Variables. (line 6) * simplifying with variables: Variables Simplify. (line 6) -* simply expanded variables: Flavors. (line 56) -* sorting words: Text Functions. (line 147) -* spaces, in variable values: Flavors. (line 107) -* spaces, stripping: Text Functions. (line 80) +* simply expanded variables: Simple Assignment. (line 9) +* sorting words: Text Functions. (line 148) +* spaces, in variable values: Simple Assignment. (line 57) +* spaces, stripping: Text Functions. (line 81) +* special characters in function arguments: Syntax of Functions. + (line 40) * special targets: Special Targets. (line 6) * special variables: Special Variables. (line 6) * specifying makefile name: Makefile Names. (line 31) @@ -6049,15 +6682,15 @@ Index of Concepts * static pattern rule, versus implicit: Static versus Implicit. (line 6) * static pattern rules, secondary expansion of: Secondary Expansion. - (line 136) + (line 135) * stem: Static Usage. (line 17) * stem <1>: Pattern Match. (line 6) -* stem, shortest: Pattern Match. (line 38) -* stem, variable for: Automatic Variables. (line 78) +* stem, shortest: Pattern Match. (line 39) +* stem, variable for: Automatic Variables. (line 87) * stopping make: Make Control Functions. (line 11) -* strings, searching for: Text Functions. (line 104) -* stripping whitespace: Text Functions. (line 80) +* strings, searching for: Text Functions. (line 105) +* stripping whitespace: Text Functions. (line 81) * sub-make: Variables/Recursion. (line 6) * subdirectories, recursion for: Recursion. (line 6) * substitution variable reference: Substitution Refs. (line 6) @@ -6076,7 +6709,7 @@ Index of Concepts * tab character (in commands): Rule Syntax. (line 25) * tabs in rules: Rule Introduction. (line 21) * TAGS (standard target): Goals. (line 112) -* tangle: Catalogue of Rules. (line 149) +* tangle: Catalogue of Rules. (line 153) * tangle <1>: Implicit Variables. (line 100) * tar (standard target): Goals. (line 101) * target: Rules. (line 6) @@ -6084,7 +6717,7 @@ Index of Concepts * target pattern, static (not implicit): Static Usage. (line 17) * target, deleting on error: Errors. (line 63) * target, deleting on interrupt: Interrupts. (line 6) -* target, expansion: Reading Makefiles. (line 93) +* target, expansion: Reading Makefiles. (line 103) * target, multiple in pattern rule: Pattern Intro. (line 44) * target, multiple rules for one: Multiple Rules. (line 6) * target, touching: Instead of Execution. @@ -6100,18 +6733,22 @@ Index of Concepts * targets, introduction to: Rule Introduction. (line 8) * targets, multiple: Multiple Targets. (line 6) * targets, phony: Phony Targets. (line 6) +* TEMP: Temporary Files. (line 13) +* temporary files: Temporary Files. (line 6) * terminal rule: Match-Anything Rules. (line 6) * terminal, output to: Terminal Output. (line 6) * test (standard target): Goals. (line 116) * testing compilation: Testing. (line 6) -* tex: Catalogue of Rules. (line 149) +* tex: Catalogue of Rules. (line 153) * tex <1>: Implicit Variables. (line 87) -* TeX, rule to run: Catalogue of Rules. (line 149) -* texi2dvi: Catalogue of Rules. (line 156) +* TeX, rule to run: Catalogue of Rules. (line 153) +* texi2dvi: Catalogue of Rules. (line 160) * texi2dvi <1>: Implicit Variables. (line 91) -* Texinfo, rule to format: Catalogue of Rules. (line 156) -* tilde (~): Wildcards. (line 11) +* Texinfo, rule to format: Catalogue of Rules. (line 160) +* tilde (~): Wildcards. (line 16) +* TMP: Temporary Files. (line 13) +* TMPDIR: Temporary Files. (line 13) * tools, sharing job slots: Job Slots. (line 6) * touch (shell command): Wildcard Examples. (line 21) * touch (shell command) <1>: Empty Targets. (line 25) @@ -6120,7 +6757,7 @@ Index of Concepts * traditional directory search (GPATH): Search Algorithm. (line 42) * types of prerequisites: Prerequisite Types. (line 6) * types, conversion of: Guile Types. (line 6) -* undefined variables, warning message: Options Summary. (line 293) +* undefined variables, warning message: Options Summary. (line 354) * undefining variable: Undefine Directive. (line 6) * updating archive symbol directories: Archive Symbols. (line 6) * updating loaded objects: Remaking Loaded Objects. @@ -6139,9 +6776,10 @@ Index of Concepts * variables, appending to: Appending. (line 6) * variables, automatic: Automatic Variables. (line 6) * variables, command line: Overriding. (line 6) -* variables, command line, and recursion: Options/Recursion. (line 17) +* variables, command line, and recursion: Options/Recursion. (line 25) * variables, computed names: Computed Names. (line 6) -* variables, conditional assignment: Flavors. (line 135) +* variables, conditional assignment: Conditional Assignment. + (line 6) * variables, defining verbatim: Multi-Line. (line 6) * variables, environment: Variables/Recursion. (line 6) * variables, environment <1>: Environment. (line 6) @@ -6150,7 +6788,11 @@ Index of Concepts * variables, flavors: Flavors. (line 6) * variables, how they get their values: Values. (line 6) * variables, how to reference: Reference. (line 6) -* variables, loops in expansion: Flavors. (line 44) +* variables, immediate assignment: Immediate Assignment. + (line 6) +* variables, local: Let Function. (line 6) +* variables, loops in expansion: Recursive Assignment. + (line 40) * variables, modified reference: Substitution Refs. (line 6) * variables, multi-line: Multi-Line. (line 6) * variables, nested references: Computed Names. (line 6) @@ -6160,13 +6802,13 @@ Index of Concepts * variables, pattern-specific: Pattern-specific. (line 6) * variables, recursively expanded: Flavors. (line 6) * variables, setting: Setting. (line 6) -* variables, simply expanded: Flavors. (line 56) -* variables, spaces in values: Flavors. (line 107) +* variables, simply expanded: Simple Assignment. (line 9) +* variables, spaces in values: Simple Assignment. (line 57) * variables, substituting suffix in: Substitution Refs. (line 6) * variables, substitution reference: Substitution Refs. (line 6) * variables, target-specific: Target-specific. (line 6) * variables, unexpanded value: Value Function. (line 6) -* variables, warning for undefined: Options Summary. (line 293) +* variables, warning for undefined: Options Summary. (line 354) * varying prerequisites: Static Pattern. (line 6) * verbatim variable definition: Multi-Line. (line 6) * vpath: Directory Search. (line 6) @@ -6174,14 +6816,14 @@ Index of Concepts * VPATH, and link libraries: Libraries/Search. (line 6) * warnings, printing: Make Control Functions. (line 35) -* weave: Catalogue of Rules. (line 149) +* weave: Catalogue of Rules. (line 153) * weave <1>: Implicit Variables. (line 94) -* Web, rule to run: Catalogue of Rules. (line 149) +* Web, rule to run: Catalogue of Rules. (line 153) * what if: Instead of Execution. (line 41) * whitespace, avoiding on line split: Splitting Lines. (line 40) -* whitespace, in variable values: Flavors. (line 107) -* whitespace, stripping: Text Functions. (line 80) +* whitespace, in variable values: Simple Assignment. (line 57) +* whitespace, stripping: Text Functions. (line 81) * wildcard: Wildcards. (line 6) * wildcard pitfalls: Wildcard Pitfall. (line 6) * wildcard, function: File Name Functions. (line 106) @@ -6190,274 +6832,21 @@ Index of Concepts * wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall. (line 31) * Windows, choosing a shell in: Choosing the Shell. (line 38) -* word, selecting a: Text Functions. (line 159) -* words, extracting first: Text Functions. (line 185) -* words, extracting last: Text Functions. (line 198) -* words, filtering: Text Functions. (line 115) -* words, filtering out: Text Functions. (line 133) -* words, finding number: Text Functions. (line 180) +* word, selecting a: Text Functions. (line 160) +* words, extracting first: Text Functions. (line 186) +* words, extracting last: Text Functions. (line 199) +* words, filtering: Text Functions. (line 116) +* words, filtering out: Text Functions. (line 134) +* words, finding number: Text Functions. (line 181) * words, iterating over: Foreach Function. (line 6) * words, joining lists: File Name Functions. (line 89) -* words, removing duplicates: Text Functions. (line 155) -* words, selecting lists of: Text Functions. (line 168) +* words, removing duplicates: Text Functions. (line 156) +* words, selecting lists of: Text Functions. (line 169) * writing recipes: Recipes. (line 6) * writing rules: Rules. (line 6) * writing to a file: File Function. (line 6) -* yacc: Catalogue of Rules. (line 117) +* yacc: Catalogue of Rules. (line 121) * yacc <1>: Implicit Variables. (line 77) * yacc <2>: Canned Recipes. (line 18) -* Yacc, rule to run: Catalogue of Rules. (line 117) - - -File: make.info, Node: Name Index, Prev: Concept Index, Up: Top - -Index of Functions, Variables, & Directives -******************************************* - -[index] -* Menu: - -* $%: Automatic Variables. (line 37) -* $(%D): Automatic Variables. (line 129) -* $(%F): Automatic Variables. (line 130) -* $(*D): Automatic Variables. (line 124) -* $(*F): Automatic Variables. (line 125) -* $(+D): Automatic Variables. (line 147) -* $(+F): Automatic Variables. (line 148) -* $(: Last Resort. (line 23) -* .DEFAULT, and empty recipes: Empty Recipes. (line 16) -* .DEFAULT_GOAL (define default goal): Special Variables. (line 34) -* .DELETE_ON_ERROR: Special Targets. (line 70) -* .DELETE_ON_ERROR <1>: Errors. (line 63) -* .EXPORT_ALL_VARIABLES: Special Targets. (line 134) -* .EXPORT_ALL_VARIABLES <1>: Variables/Recursion. (line 99) -* .EXTRA_PREREQS (prerequisites not added to automatic variables): Special Variables. - (line 178) -* .FEATURES (list of supported features): Special Variables. (line 121) -* .IGNORE: Special Targets. (line 77) -* .IGNORE <1>: Errors. (line 30) -* .INCLUDE_DIRS (list of include directories): Special Variables. - (line 174) -* .INTERMEDIATE: Special Targets. (line 47) -* .LIBPATTERNS: Libraries/Search. (line 6) -* .LOADED: load Directive. (line 62) -* .LOW_RESOLUTION_TIME: Special Targets. (line 90) -* .NOTPARALLEL: Special Targets. (line 140) -* .ONESHELL: Special Targets. (line 148) -* .ONESHELL <1>: One Shell. (line 6) -* .PHONY: Phony Targets. (line 22) -* .PHONY <1>: Special Targets. (line 8) -* .POSIX: Special Targets. (line 155) -* .POSIX <1>: Options/Recursion. (line 61) -* .PRECIOUS: Special Targets. (line 31) -* .PRECIOUS <1>: Interrupts. (line 22) -* .RECIPEPREFIX (change the recipe prefix character): Special Variables. - (line 99) -* .SECONDARY: Special Targets. (line 53) -* .SECONDEXPANSION: Secondary Expansion. (line 6) -* .SECONDEXPANSION <1>: Special Targets. (line 63) -* .SHELLFLAGS: Choosing the Shell. (line 6) -* .SHELLFLAGS <1>: Choosing the Shell. (line 87) -* .SHELLSTATUS: Shell Function. (line 25) -* .SILENT: Special Targets. (line 121) -* .SILENT <1>: Echoing. (line 24) -* .SUFFIXES: Special Targets. (line 16) -* .SUFFIXES <1>: Suffix Rules. (line 61) -* .VARIABLES (list of variables): Special Variables. (line 112) -* /usr/gnu/include: Include. (line 53) -* /usr/include: Include. (line 53) -* /usr/local/include: Include. (line 53) -* < (automatic variable): Automatic Variables. (line 43) -* : Conditional Functions. - (line 12) -* ifdef: Conditional Syntax. (line 6) -* ifeq: Conditional Syntax. (line 6) -* ifndef: Conditional Syntax. (line 6) -* ifneq: Conditional Syntax. (line 6) -* include: Include. (line 6) -* info: Make Control Functions. - (line 43) -* join: File Name Functions. (line 89) -* lastword: Text Functions. (line 198) -* LDFLAGS: Implicit Variables. (line 139) -* LDLIBS: Implicit Variables. (line 144) -* LEX: Implicit Variables. (line 72) -* LFLAGS: Implicit Variables. (line 150) -* libexecdir: Directory Variables. (line 70) -* LINT: Implicit Variables. (line 80) -* LINTFLAGS: Implicit Variables. (line 162) -* load: load Directive. (line 9) -* LOADLIBES: Implicit Variables. (line 144) -* M2C: Implicit Variables. (line 60) -* MAKE: MAKE Variable. (line 6) -* MAKE <1>: Flavors. (line 88) -* MAKECMDGOALS: Goals. (line 30) -* Makefile: Makefile Names. (line 7) -* makefile: Makefile Names. (line 7) -* MAKEFILES: MAKEFILES Variable. (line 6) -* MAKEFILES <1>: Variables/Recursion. (line 126) -* MAKEFILE_LIST (list of parsed makefiles): Special Variables. - (line 8) -* MAKEFLAGS: Options/Recursion. (line 6) -* MAKEINFO: Implicit Variables. (line 83) -* MAKELEVEL: Variables/Recursion. (line 114) -* MAKELEVEL <1>: Flavors. (line 88) -* MAKEOVERRIDES: Options/Recursion. (line 50) -* MAKESHELL (MS-DOS alternative to SHELL): Choosing the Shell. - (line 27) -* MAKE_HOST: Quick Reference. (line 348) -* MAKE_RESTARTS (number of times make has restarted): Special Variables. - (line 73) -* MAKE_TERMERR (whether stderr is a terminal): Special Variables. - (line 80) -* MAKE_TERMOUT (whether stdout is a terminal): Special Variables. - (line 80) -* MAKE_VERSION: Quick Reference. (line 343) -* MFLAGS: Options/Recursion. (line 66) -* notdir: File Name Functions. (line 26) -* or: Conditional Functions. - (line 37) -* origin: Origin Function. (line 6) -* OUTPUT_OPTION: Catalogue of Rules. (line 200) -* override: Override Directive. (line 6) -* patsubst: Substitution Refs. (line 28) -* patsubst <1>: Text Functions. (line 18) -* PC: Implicit Variables. (line 63) -* PFLAGS: Implicit Variables. (line 156) -* prefix: Directory Variables. (line 29) -* private: Suppressing Inheritance. - (line 6) -* realpath: File Name Functions. (line 113) -* RFLAGS: Implicit Variables. (line 159) -* RM: Implicit Variables. (line 106) -* sbindir: Directory Variables. (line 63) -* SHELL: Choosing the Shell. (line 6) -* SHELL <1>: Choosing the Shell. (line 88) -* shell: Shell Function. (line 6) -* SHELL (recipe execution): Execution. (line 6) -* sort: Text Functions. (line 147) -* strip: Text Functions. (line 80) -* subst: Multiple Targets. (line 39) -* subst <1>: Text Functions. (line 9) -* suffix: File Name Functions. (line 42) -* SUFFIXES: Suffix Rules. (line 81) -* TANGLE: Implicit Variables. (line 100) -* TEX: Implicit Variables. (line 87) -* TEXI2DVI: Implicit Variables. (line 90) -* undefine: Undefine Directive. (line 6) -* unexport: Variables/Recursion. (line 45) -* value: Value Function. (line 6) -* VPATH: Directory Search. (line 6) -* VPATH <1>: General Search. (line 6) -* vpath: Directory Search. (line 6) -* vpath <1>: Selective Search. (line 6) -* warning: Make Control Functions. - (line 35) -* WEAVE: Implicit Variables. (line 94) -* wildcard: Wildcard Function. (line 6) -* wildcard <1>: File Name Functions. (line 106) -* word: Text Functions. (line 159) -* wordlist: Text Functions. (line 168) -* words: Text Functions. (line 180) -* YACC: Implicit Variables. (line 76) -* YFLAGS: Implicit Variables. (line 153) +* Yacc, rule to run: Catalogue of Rules. (line 121) diff --git a/doc/make.info-3 b/doc/make.info-3 new file mode 100644 index 0000000000000000000000000000000000000000..d10e16b5e4897e128581c8295f4013be3eac55eb GIT binary patch literal 19645 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 literal 0 HcmV?d00001 diff --git a/doc/make.texi b/doc/make.texi index 733c0b9..e3a3ade 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -3,7 +3,7 @@ @setfilename make.info @include version.texi -@set EDITION 0.75 +@set EDITION 0.76 @settitle GNU @code{make} @setchapternewpage odd @@ -27,7 +27,7 @@ of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}. Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, -2020 Free Software Foundation, Inc. +2020, 2021, 2022 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -224,6 +224,7 @@ Recipe Execution Parallel Execution +* Parallel Disable:: Disabling parallel execution * Parallel Output:: Handling output during parallel execution * Parallel Input:: Handling input during parallel execution @@ -258,6 +259,13 @@ How to Use Variables * Suppressing Inheritance:: Suppress inheritance of variables. * Special Variables:: Variables with special meaning or behavior. +The Two Flavors of Variables + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + Advanced Features for Reference to Variables * Substitution Refs:: Referencing a variable with @@ -276,6 +284,7 @@ Functions for Transforming Text * Text Functions:: General-purpose text manipulation functions. * File Name Functions:: Functions for manipulating file names. * Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. * Foreach Function:: Repeat some text with controlled variation. * File Function:: Write text to a file. * Call Function:: Expand a user-defined function. @@ -301,6 +310,7 @@ How to Run @code{make} an alternate compiler and other things. * Testing:: How to proceed past some errors, to test compilation. +* Temporary Files:: Where @code{make} keeps its temporary files. * Options Summary:: Summary of Options Using Implicit Rules @@ -409,7 +419,7 @@ To prepare to use @code{make}, you must write a file called the @dfn{makefile} that describes the relationships among files in your program and provides commands for updating each file. In a program, typically, the executable file is updated from object -files, which are in turn made by compiling source files.@refill +files, which are in turn made by compiling source files. Once a suitable makefile exists, each time you change some source files, this simple shell command: @@ -492,7 +502,7 @@ Either send electronic mail to: or use our Web-based project management tool, at: @example - http://savannah.gnu.org/projects/make/ + https://savannah.gnu.org/projects/make/ @end example @noindent @@ -503,6 +513,9 @@ include the type of machine and operating system you are using. One way to obtain this information is by looking at the final lines of output from the command @samp{make --help}. +If you have a code change you'd like to submit, see the @file{README} file +section ``Submitting Patches'' for information. + @node Introduction, Makefiles, Overview, Top @comment node-name, next, previous, up @chapter An Introduction to Makefiles @@ -681,7 +694,7 @@ other lines in the makefile. (Bear in mind that @code{make} does not know anything about how the recipes work. It is up to you to supply recipes that will update the target file properly. All @code{make} does is execute the recipe you have specified when the target file -needs to be updated.)@refill +needs to be updated.) @cindex recipe The target @samp{clean} is not a file, but merely the name of an @@ -704,13 +717,13 @@ to ignore errors from @code{rm} or any other command. @cindex processing a makefile @cindex makefile, how @code{make} processes -By default, @code{make} starts with the first target (not targets whose -names start with @samp{.}). This is called the @dfn{default goal}. -(@dfn{Goals} are the targets that @code{make} strives ultimately to -update. You can override this behavior using the command line -(@pxref{Goals, , Arguments to Specify the Goals}) or with the -@code{.DEFAULT_GOAL} special variable (@pxref{Special Variables, , -Other Special Variables}). +By default, @code{make} starts with the first target (not targets whose names +start with @samp{.} unless they also contain one or more @samp{/}). This is +called the @dfn{default goal}. (@dfn{Goals} are the targets that @code{make} +strives ultimately to update. You can override this behavior using the +command line (@pxref{Goals, , Arguments to Specify the Goals}) or with the +@code{.DEFAULT_GOAL} special variable (@pxref{Special Variables, , Other +Special Variables}). @cindex default goal @cindex goal, default @cindex goal @@ -796,7 +809,7 @@ It is standard practice for every makefile to have a variable named @code{objects}, @code{OBJECTS}, @code{objs}, @code{OBJS}, @code{obj}, or @code{OBJ} which is a list of all object file names. We would define such a variable @code{objects} with a line like this in the -makefile:@refill +makefile: @example @group @@ -853,7 +866,7 @@ C source files, because @code{make} can figure them out: it has an named @samp{.c} file using a @samp{cc -c} command. For example, it will use the recipe @samp{cc -c main.c -o main.o} to compile @file{main.c} into @file{main.o}. We can therefore omit the recipes from the rules for the -object files. @xref{Implicit Rules, ,Using Implicit Rules}.@refill +object files. @xref{Implicit Rules, ,Using Implicit Rules}. When a @samp{.c} file is used automatically in this way, it is also automatically added to the list of prerequisites. We can therefore omit @@ -891,7 +904,7 @@ complications associated with @samp{clean} are described elsewhere. See @ref{Phony Targets}, and @ref{Errors, ,Errors in Recipes}.) Because implicit rules are so convenient, they are important. You -will see them used frequently.@refill +will see them used frequently. @node Combine By Prerequisite, Cleanup, make Deduces, Introduction @section Another Style of Makefile @@ -1000,7 +1013,7 @@ reading a data base called the @dfn{makefile}. Makefiles contain five kinds of things: @dfn{explicit rules}, @dfn{implicit rules}, @dfn{variable definitions}, @dfn{directives}, and @dfn{comments}. Rules, variables, and directives are described at -length in later chapters.@refill +length in later chapters. @itemize @bullet @cindex rule, explicit, definition of @@ -1121,7 +1134,7 @@ backslash/newlines are not condensed. If you need to split a line but do @emph{not} want any whitespace added, you can utilize a subtle trick: replace your backslash/newline -pairs with the three characters dollar sign/backslash/newline: +pairs with the three characters dollar sign, backslash, and newline: @example var := one$\ @@ -1155,7 +1168,7 @@ var := oneword @c following paragraph rewritten to avoid overfull hbox By default, when @code{make} looks for the makefile, it tries the following names, in order: @file{GNUmakefile}, @file{makefile} -and @file{Makefile}.@refill +and @file{Makefile}. @findex Makefile @findex GNUmakefile @findex makefile @@ -1187,7 +1200,7 @@ more than one @samp{-f} or @samp{--file} option, you can specify several makefiles. All the makefiles are effectively concatenated in the order specified. The default makefile names @file{GNUmakefile}, @file{makefile} and @file{Makefile} are not checked automatically if you -specify @samp{-f} or @samp{--file}.@refill +specify @samp{-f} or @samp{--file}. @cindex specifying makefile name @cindex makefile name, how to specify @cindex name of makefile, how to specify @@ -1269,7 +1282,7 @@ makefile as has been traditionally done with other versions of If the specified name does not start with a slash, and the file is not found in the current directory, several other directories are searched. First, any directories you have specified with the @samp{-I} or -@samp{--include-dir} option are searched +@samp{--include-dir} options are searched (@pxref{Options Summary, ,Summary of Options}). Then the following directories (if they exist) are searched, in this order: @@ -1280,14 +1293,23 @@ hierarchy.}) @file{/usr/gnu/include}, @file{/usr/local/include}, @file{/usr/include}. -If an included makefile cannot be found in any of these directories, a -warning message is generated, but it is not an immediately fatal error; -processing of the makefile containing the @code{include} continues. -Once it has finished reading makefiles, @code{make} will try to remake -any that are out of date or don't exist. -@xref{Remaking Makefiles, ,How Makefiles Are Remade}. -Only after it has tried to find a way to remake a makefile and failed, -will @code{make} diagnose the missing makefile as a fatal error. +The @code{.INCLUDE_DIRS} variable will contain the current list of +directories that make will search for included files. @xref{Special +Variables, ,Other Special Variables}. + +You can avoid searching in these default directories by adding the +command line option @code{-I} with the special value @code{-} (e.g., +@code{-I-}) to the command line. This will cause @code{make} to +forget any already-set include directories, including the default +directories. + +If an included makefile cannot be found in any of these directories it is not +an immediately fatal error; processing of the makefile containing the +@code{include} continues. Once it has finished reading makefiles, @code{make} +will try to remake any that are out of date or don't exist. @xref{Remaking +Makefiles, ,How Makefiles Are Remade}. Only after it has failed to find a +rule to remake the makefile, or it found a rule but the recipe failed, will +@code{make} diagnose the missing makefile as a fatal error. If you want @code{make} to simply ignore a makefile which does not exist or cannot be remade, with no error message, use the @w{@code{-include}} @@ -1318,7 +1340,7 @@ like the @code{include} directive: various directories are searched for those files (@pxref{Include, ,Including Other Makefiles}). In addition, the default goal is never taken from one of these makefiles (or any makefile included by them) and it is not an error if the files -listed in @code{MAKEFILES} are not found.@refill +listed in @code{MAKEFILES} are not found. @cindex recursion, and @code{MAKEFILES} variable The main use of @code{MAKEFILES} is in communication between recursive @@ -1346,16 +1368,21 @@ files. If a makefile can be remade from other files, you probably want @code{make} to get an up-to-date version of the makefile to read in. To this end, after reading in all makefiles @code{make} will consider -each as a goal target and attempt to update it. If a makefile has a -rule which says how to update it (found either in that very makefile or -in another one) or if an implicit rule applies to it (@pxref{Implicit -Rules, ,Using Implicit Rules}), it will be updated if necessary. After -all makefiles have been checked, if any have actually been changed, -@code{make} starts with a clean slate and reads all the makefiles over -again. (It will also attempt to update each of them over again, but -normally this will not change them again, since they are already up to -date.) Each restart will cause the special variable -@code{MAKE_RESTARTS} to be updated (@pxref{Special Variables}).@refill +each as a goal target, in the order in which they were processed, and +attempt to update it. If parallel builds (@pxref{Parallel, ,Parallel +Execution}) are enabled then makefiles will be rebuilt in parallel as +well. + +If a makefile has a rule which says how to update it (found either in +that very makefile or in another one) or if an implicit rule applies +to it (@pxref{Implicit Rules, ,Using Implicit Rules}), it will be +updated if necessary. After all makefiles have been checked, if any +have actually been changed, @code{make} starts with a clean slate and +reads all the makefiles over again. (It will also attempt to update +each of them over again, but normally this will not change them again, +since they are already up to date.) Each restart will cause the +special variable @code{MAKE_RESTARTS} to be updated (@pxref{Special +Variables}). If you know that one or more of your makefiles cannot be remade and you want to keep @code{make} from performing an implicit rule search @@ -1364,16 +1391,34 @@ of preventing implicit rule look-up to do so. For example, you can write an explicit rule with the makefile as the target, and an empty recipe (@pxref{Empty Recipes, ,Using Empty Recipes}). -If the makefiles specify a double-colon rule to remake a file with -a recipe but no prerequisites, that file will always be remade -(@pxref{Double-Colon}). In the case of makefiles, a makefile that has a -double-colon rule with a recipe but no prerequisites will be remade every -time @code{make} is run, and then again after @code{make} starts over -and reads the makefiles in again. This would cause an infinite loop: -@code{make} would constantly remake the makefile, and never do anything -else. So, to avoid this, @code{make} will @strong{not} attempt to -remake makefiles which are specified as targets of a double-colon rule -with a recipe but no prerequisites.@refill +If the makefiles specify a double-colon rule to remake a file with a recipe +but no prerequisites, that file will always be remade (@pxref{Double-Colon}). +In the case of makefiles, a makefile that has a double-colon rule with a +recipe but no prerequisites will be remade every time @code{make} is run, and +then again after @code{make} starts over and reads the makefiles in again. +This would cause an infinite loop: @code{make} would constantly remake the +makefile and restart, and never do anything else. So, to avoid this, +@code{make} will @strong{not} attempt to remake makefiles which are specified +as targets of a double-colon rule with a recipe but no prerequisites. + +Phony targets (@pxref{Phony Targets}) have the same effect: they are never +considered up-to-date and so an included file marked as phony would cause +@code{make} to restart continuously. To avoid this @code{make} will not +attempt to remake makefiles which are marked phony. + +You can take advantage of this to optimize startup time: if you know you don't +need your @file{Makefile} to be remade you can prevent make from trying to +remake it by adding either: + +@example +.PHONY: Makefile +@end example + +or: + +@example +Makefile:: ; +@end example If you do not specify any makefiles to be read with @samp{-f} or @samp{--file} options, @code{make} will try the default makefile names; @@ -1384,12 +1429,11 @@ if a default makefile does not exist but can be created by running @code{make} rules, you probably want the rules to be run so that the makefile can be used. -Therefore, if none of the default makefiles exists, @code{make} will try -to make each of them in the same order in which they are searched for -(@pxref{Makefile Names, ,What Name to Give Your Makefile}) -until it succeeds in making one, or it runs out of names to try. Note -that it is not an error if @code{make} cannot find or make any makefile; -a makefile is not always necessary.@refill +Therefore, if none of the default makefiles exists, @code{make} will +try to make each of them until it succeeds in making one, or it runs +out of names to try. Note that it is not an error if @code{make} +cannot find or make any makefile; a makefile is not always +necessary. When you use the @samp{-t} or @samp{--touch} option (@pxref{Instead of Execution, ,Instead of Executing Recipes}), @@ -1510,6 +1554,7 @@ Variable definitions are parsed as follows: @var{immediate} ?= @var{deferred} @var{immediate} := @var{immediate} @var{immediate} ::= @var{immediate} +@var{immediate} :::= @var{immediate-with-escape} @var{immediate} += @var{deferred} or @var{immediate} @var{immediate} != @var{immediate} @@ -1533,6 +1578,10 @@ define @var{immediate} ::= @var{immediate} endef +define @var{immediate} :::= + @var{immediate-with-escape} +endef + define @var{immediate} += @var{deferred} or @var{immediate} endef @@ -1546,10 +1595,16 @@ For the append operator @samp{+=}, the right-hand side is considered immediate if the variable was previously set as a simple variable (@samp{:=} or @samp{::=}), and deferred otherwise. +For the @var{immediate-with-escape} operator @samp{:::=}, the value on +the right-hand side is immediately expanded but then escaped (that is, +all instances of @code{$} in the result of the expansion are replaced +with @code{$$}). + For the shell assignment operator @samp{!=}, the right-hand side is evaluated immediately and handed to the shell. The result is stored -in the variable named on the left, and that variable becomes a simple -variable (and will thus be re-evaluated on each reference). +in the variable named on the left, and that variable is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). @subheading Conditional Directives @cindex ifdef, expansion @@ -1607,7 +1662,7 @@ line (@pxref{Recipe Syntax}). @item Expand elements of the line which appear in an @emph{immediate} expansion context (@pxref{Reading Makefiles, , How @code{make} Reads a -Makefile}).@refill +Makefile}). @item Scan the line for a separator character, such as @samp{:} or @samp{=}, @@ -1664,18 +1719,16 @@ this second expansion to occur, the special target @code{.SECONDEXPANSION} must be defined before the first prerequisite list that makes use of this feature. -If that special target is defined then in between the two phases -mentioned above, right at the end of the read-in phase, all the -prerequisites of the targets defined after the special target are -expanded a @emph{second time}. In most circumstances this secondary -expansion will have no effect, since all variable and function -references will have been expanded during the initial parsing of the -makefiles. In order to take advantage of the secondary expansion -phase of the parser, then, it's necessary to @emph{escape} the -variable or function reference in the makefile. In this case the -first expansion merely un-escapes the reference but doesn't expand it, -and expansion is left to the secondary expansion phase. For example, -consider this makefile: +If @code{.SECONDEXPANSION} is defined then when GNU @code{make} needs to check +the prerequisites of a target, the prerequisites are expanded a @emph{second +time}. In most circumstances this secondary expansion will have no effect, +since all variable and function references will have been expanded during the +initial parsing of the makefiles. In order to take advantage of the secondary +expansion phase of the parser, then, it's necessary to @emph{escape} the +variable or function reference in the makefile. In this case the first +expansion merely un-escapes the reference but doesn't expand it, and expansion +is left to the secondary expansion phase. For example, consider this +makefile: @example .SECONDEXPANSION: @@ -1836,7 +1889,7 @@ expands to @file{bar}, @code{$$^} expands to @file{bar boo}, Note that the directory prefix (D), as described in @ref{Implicit Rule Search, ,Implicit Rule Search Algorithm}, is appended (after expansion) to all the patterns in the prerequisites list. As an -example:@refill +example: @example .SECONDEXPANSION: @@ -1867,15 +1920,13 @@ the @dfn{recipe} to use to create or update the target. @cindex default goal @cindex goal, default -The order of rules is not significant, except for determining the -@dfn{default goal}: the target for @code{make} to consider, if you do -not otherwise specify one. The default goal is the target of the first -rule in the first makefile. If the first rule has multiple targets, -only the first target is taken as the default. There are two -exceptions: a target starting with a period is not a default unless it -contains one or more slashes, @samp{/}, as well; and, a target that -defines a pattern rule has no effect on the default goal. -(@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.) +The order of rules is not significant, except for determining the @dfn{default +goal}: the target for @code{make} to consider, if you do not otherwise specify +one. The default goal is the first target of the first rule in the first +makefile. There are two exceptions: a target starting with a period is not a +default unless it also contains one or more slashes, @samp{/}; and, a target +that defines a pattern rule has no effect on the default goal. (@xref{Pattern +Rules, ,Defining and Redefining Pattern Rules}.) Therefore, we usually write the makefile so that the first rule is the one for compiling the entire program or all the programs described by @@ -1968,7 +2019,7 @@ represents member @var{m} in archive file @var{a} (@pxref{Archive Members, ,Archive Members as Targets}). Usually there is only one target per rule, but occasionally there is a reason to have more -(@pxref{Multiple Targets, , Multiple Targets in a Rule}).@refill +(@pxref{Multiple Targets, , Multiple Targets in a Rule}). @cindex recipes @cindex tab character (in commands) @@ -2024,26 +2075,25 @@ extra features (@pxref{Recipes, ,Writing Recipes in Rules}). @cindex normal prerequisites @cindex prerequisites, order-only @cindex order-only prerequisites -There are actually two different types of prerequisites understood by -GNU @code{make}: normal prerequisites such as described in the -previous section, and @dfn{order-only} prerequisites. A normal -prerequisite makes two statements: first, it imposes an order in which -recipes will be invoked: the recipes for all prerequisites of a target -will be completed before the recipe for the target is run. Second, it -imposes a dependency relationship: if any prerequisite is newer than -the target, then the target is considered out-of-date and must be +There are two different types of prerequisites understood by GNU @code{make}: +normal prerequisites, described in the previous section, and @dfn{order-only} +prerequisites. A normal prerequisite makes two statements: first, it imposes +an order in which recipes will be invoked: the recipes for all prerequisites +of a target will be completed before the recipe for the target is started. +Second, it imposes a dependency relationship: if any prerequisite is newer +than the target, then the target is considered out-of-date and must be rebuilt. Normally, this is exactly what you want: if a target's prerequisite is updated, then the target should also be updated. -Occasionally, however, you have a situation where you want to impose a -specific ordering on the rules to be invoked @emph{without} forcing -the target to be updated if one of those rules is executed. In that -case, you want to define @dfn{order-only} prerequisites. Order-only -prerequisites can be specified by placing a pipe symbol (@code{|}) -in the prerequisites list: any prerequisites to the left of the pipe -symbol are normal; any prerequisites to the right are order-only: +Occasionally you may want to ensure that a prerequisite is built before a +target, but @emph{without} forcing the target to be updated if the +prerequisite is updated. @dfn{Order-only} prerequisites are used to create +this type of relationship. Order-only prerequisites can be specified by +placing a pipe symbol (@code{|}) in the prerequisites list: any prerequisites +to the left of the pipe symbol are normal; any prerequisites to the right are +order-only: @example @var{targets} : @var{normal-prerequisites} | @var{order-only-prerequisites} @@ -2058,6 +2108,10 @@ declare the same file to be both a normal and an order-only prerequisite, the normal prerequisite takes precedence (since they have a strict superset of the behavior of an order-only prerequisite). +Order-only prerequisites are never checked when determining if the +target is out of date; even order-only prerequisites marked as phony +(@pxref{Phony Targets}) will not cause the target to be rebuilt. + Consider an example where your targets are to be placed in a separate directory, and that directory might not exist before @code{make} is run. In this situation, you want the directory to be created before @@ -2100,7 +2154,14 @@ A single file name can specify many files using @dfn{wildcard characters}. The wildcard characters in @code{make} are @samp{*}, @samp{?} and @samp{[@dots{}]}, the same as in the Bourne shell. For example, @file{*.c} specifies a list of all the files (in the working directory) whose names -end in @samp{.c}.@refill +end in @samp{.c}. + +If an expression matches multiple files than the results will be +sorted.@footnote{Some older versions of GNU @code{make} did not sort the +results of wildcard expansion.} However multiple expressions will not be +globally sorted. For example, @file{*.c *.h} will list all the files whose +names end in @samp{.c}, sorted, followed by all the files whose names end in +@samp{.h}, sorted. @cindex @code{~} (tilde) @cindex tilde (@code{~}) @@ -2113,7 +2174,7 @@ directory of the user named by that word. For example @file{~john/bin} expands to @file{/home/john/bin}. On systems which don't have a home directory for each user (such as MS-DOS or MS-Windows), this functionality can be simulated by setting the environment variable -@var{HOME}.@refill +@var{HOME}. Wildcard expansion is performed by @code{make} automatically in targets and in prerequisites. In recipes, the shell is responsible @@ -2123,7 +2184,7 @@ only if you request it explicitly with the @code{wildcard} function. The special significance of a wildcard character can be turned off by preceding it with a backslash. Thus, @file{foo\*bar} would refer to a specific file whose name consists of @samp{foo}, an asterisk, and -@samp{bar}.@refill +@samp{bar}. @menu * Wildcard Examples:: Several examples. @@ -2163,7 +2224,7 @@ print: *.c This rule uses @file{print} as an empty target file; see @ref{Empty Targets, ,Empty Target Files to Record Events}. (The automatic variable @samp{$?} is used to print only those files that have changed; see -@ref{Automatic Variables}.)@refill +@ref{Automatic Variables}.) Wildcard expansion does not happen when you define a variable. Thus, if you write this: @@ -2269,6 +2330,11 @@ function. Note that this is different from how unmatched wildcards behave in rules, where they are used verbatim rather than ignored (@pxref{Wildcard Pitfall}). +As with wildcard expansion in rules, the results of the @code{wildcard} +function are sorted. But again, each individual expression is sorted +separately, so @samp{$(wildcard *.c *.h)} will expand to all files matching +@samp{.c}, sorted, followed by all files matching @samp{.h}, sorted. + One use of the @code{wildcard} function is to get a list of all the C source files in a directory, like this: @@ -2285,7 +2351,7 @@ $(patsubst %.c,%.o,$(wildcard *.c)) @noindent (Here we have used another function, @code{patsubst}. -@xref{Text Functions, ,Functions for String Substitution and Analysis}.)@refill +@xref{Text Functions, ,Functions for String Substitution and Analysis}.) Thus, a makefile to compile all C source files in the directory and then link them together could be written as follows: @@ -2429,7 +2495,7 @@ with preceding backslashes (@samp{\}). Backslashes that would otherwise quote @samp{%} characters can be quoted with more backslashes. Backslashes that quote @samp{%} characters or other backslashes are removed from the pattern before it is compared to file names. Backslashes -that are not in danger of quoting @samp{%} characters go unmolested.@refill +that are not in danger of quoting @samp{%} characters go unmolested. When a prerequisite fails to exist in the current directory, if the @var{pattern} in a @code{vpath} directive matches the name of the @@ -2562,7 +2628,7 @@ This is done with the @dfn{automatic variables} such as @samp{$^} For instance, the value of @samp{$^} is a list of all the prerequisites of the rule, including the names of the directories in which they were found, and the value of -@samp{$@@} is the target. Thus:@refill +@samp{$@@} is the target. Thus: @example foo.o : foo.c @@ -2627,7 +2693,7 @@ linker. This special feature comes into play when you write a prerequisite whose name is of the form @samp{-l@var{name}}. (You can tell something strange is going on here because the prerequisite is normally the name of a file, and the @emph{file name} of a library generally looks like -@file{lib@var{name}.a}, not like @samp{-l@var{name}}.)@refill +@file{lib@var{name}.a}, not like @samp{-l@var{name}}.) When a prerequisite's name has the form @samp{-l@var{name}}, @code{make} handles it specially by searching for the file @file{lib@var{name}.so}, @@ -2652,7 +2718,7 @@ foo : foo.c -lcurses @noindent would cause the command @samp{cc foo.c /usr/lib/libcurses.a -o foo} to be executed when @file{foo} is older than @file{foo.c} or than -@file{/usr/lib/libcurses.a}.@refill +@file{/usr/lib/libcurses.a}. Although the default set of files to be searched for is @file{lib@var{name}.so} and @file{lib@var{name}.a}, this is customizable @@ -2717,6 +2783,12 @@ clean: Once this is done, @samp{make clean} will run the recipe regardless of whether there is a file named @file{clean}. +Prerequisites of @code{.PHONY} are always interpreted as literal +target names, never as patterns (even if they contain @samp{%} +characters). To always rebuild a pattern rule consider using a +``force target'' (@pxref{Force Targets, ,Rules without Recipes or +Prerequisites}). + Phony targets are also useful in conjunction with recursive invocations of @code{make} (@pxref{Recursion, ,Recursive Use of @code{make}}). In this situation the makefile will often contain a variable which @@ -2735,15 +2807,15 @@ subdirs: @end group @end example -There are problems with this method, however. First, any error -detected in a sub-make is ignored by this rule, so it will continue -to build the rest of the directories even when one fails. This can be -overcome by adding shell commands to note the error and exit, but then -it will do so even if @code{make} is invoked with the @code{-k} -option, which is unfortunate. Second, and perhaps more importantly, -you cannot take advantage of @code{make}'s ability to build targets in -parallel (@pxref{Parallel, ,Parallel Execution}), since there is only -one rule. +There are problems with this method, however. First, any error detected in a +sub-make is ignored by this rule, so it will continue to build the rest of the +directories even when one fails. This can be overcome by adding shell +commands to note the error and exit, but then it will do so even if +@code{make} is invoked with the @code{-k} option, which is unfortunate. +Second, and perhaps more importantly, you cannot take full advantage of +@code{make}'s ability to build targets in parallel (@pxref{Parallel, ,Parallel +Execution}), since there is only one rule. Each individual makefile's targets +will be built in parallel, but only one sub-directory will be built at a time. By declaring the sub-directories as @code{.PHONY} targets (you must do this as the sub-directory obviously always exists; otherwise it won't @@ -2774,12 +2846,18 @@ The implicit rule search (@pxref{Implicit Rules}) is skipped for @code{.PHONY} is good for performance, even if you are not worried about the actual file existing. -A phony target should not be a prerequisite of a real target file; if it -is, its recipe will be run every time @code{make} goes to update that -file. As long as a phony target is never a prerequisite of a real -target, the phony target recipe will be executed only when the phony -target is a specified goal (@pxref{Goals, ,Arguments to Specify the -Goals}). +A phony target should not be a prerequisite of a real target file; if it is, +its recipe will be run every time @code{make} considers that file. As long as +a phony target is never a prerequisite of a real target, the phony target +recipe will be executed only when the phony target is a specified goal +(@pxref{Goals, ,Arguments to Specify the Goals}). + +You should not declare an included makefile as phony. Phony targets are not +intended to represent real files, and because the target is always considered +out of date make will always rebuild it then re-execute itself +(@pxref{Remaking Makefiles, ,How Makefiles Are Remade}). To avoid this, +@code{make} will not re-execute itself if an included file marked as phony is +re-built. Phony targets can have prerequisites. When one directory contains multiple programs, it is most convenient to describe all of the programs in one @@ -2958,6 +3036,18 @@ The targets which @code{.INTERMEDIATE} depends on are treated as intermediate files. @xref{Chained Rules, ,Chains of Implicit Rules}. @code{.INTERMEDIATE} with no prerequisites has no effect. +@findex .NOTINTERMEDIATE +@item .NOTINTERMEDIATE +@cindex not intermediate targets, explicit + +Prerequisites of the special target @code{.NOTINTERMEDIATE} are never +considered intermediate files. @xref{Chained Rules, ,Chains of Implicit Rules}. +@code{.NOTINTERMEDIATE} with no prerequisites causes all targets to be treated +as not intermediate. + +If the prerequisite is a target pattern then targets that are built using that +pattern rule are not considered intermediate. + @findex .SECONDARY @item .SECONDARY @cindex secondary targets @@ -2967,6 +3057,30 @@ The targets which @code{.SECONDARY} depends on are treated as intermediate files, except that they are never automatically deleted. @xref{Chained Rules, ,Chains of Implicit Rules}. +@code{.SECONDARY} can be used to avoid redundant rebuilds in some unusual +situations. For example: + +@example +@group +hello.bin: hello.o bye.o + $(CC) -o $@@ $^ + +%.o: %.c + $(CC) -c -o $@@ $< + +.SECONDARY: hello.o bye.o +@end group +@end example + +Suppose @file{hello.bin} is up to date in regards to the source files, +@emph{but} the object file @file{hello.o} is missing. Without +@code{.SECONDARY} make would rebuild @file{hello.o} then rebuild +@file{hello.bin} even though the source files had not changed. By declaring +@file{hello.o} as @code{.SECONDARY} @code{make} will not need to rebuild it +and won't need to rebuild @file{hello.bin} either. Of course, of one of the +source files @emph{were} updated then all object files would be rebuilt so +that the creation of @file{hello.bin} could succeed. + @code{.SECONDARY} with no prerequisites causes all targets to be treated as secondary (i.e., no target is removed because it is considered intermediate). @@ -3056,20 +3170,24 @@ for a particular run of @code{make}, use the @samp{-s} or @findex .EXPORT_ALL_VARIABLES @item .EXPORT_ALL_VARIABLES -Simply by being mentioned as a target, this tells @code{make} to -export all variables to child processes by default. -@xref{Variables/Recursion, ,Communicating Variables to a -Sub-@code{make}}. +Simply by being mentioned as a target, this tells @code{make} to export all +variables to child processes by default. This is an alternative to using +@code{export} with no arguments. @xref{Variables/Recursion, ,Communicating +Variables to a Sub-@code{make}}. @findex .NOTPARALLEL @item .NOTPARALLEL @cindex parallel execution, overriding -If @code{.NOTPARALLEL} is mentioned as a target, then this invocation -of @code{make} will be run serially, even if the @samp{-j} option is -given. Any recursively invoked @code{make} command will still run -recipes in parallel (unless its makefile also contains this target). -Any prerequisites on this target are ignored. +If @code{.NOTPARALLEL} is mentioned as a target with no prerequisites, all +targets in this invocation of @code{make} will be run serially, even if the +@samp{-j} option is given. Any recursively invoked @code{make} command will +still run recipes in parallel (unless its makefile also contains this target). + +If @code{.NOTPARALLEL} has targets as prerequisites, then all the +prerequisites of those targets will be run serially. This implicitly adds a +@code{.WAIT} between each prerequisite of the listed targets. @xref{Parallel +Disable, , Disabling Parallel Execution}. @findex .ONESHELL @item .ONESHELL @@ -3077,8 +3195,8 @@ Any prerequisites on this target are ignored. If @code{.ONESHELL} is mentioned as a target, then when a target is built all lines of the recipe will be given to a single invocation of -the shell rather than each line being invoked separately -(@pxref{Execution, ,Recipe Execution}). +the shell rather than each line being invoked separately. +@xref{Execution, ,Recipe Execution}. @findex .POSIX @item .POSIX @@ -3188,17 +3306,17 @@ can do it with a @dfn{static pattern rule}. @xref{Static Pattern, @cindex grouped targets @cindex targets, grouped -If instead of independent targets you have a recipe that generates -multiple files from a single invocation, you can express that -relationship by declaring your rule to use @emph{grouped targets}. A -grouped target rule uses the separator @code{&:} (the @samp{&} here is -used to imply ``all''). +If instead of independent targets you have a recipe that generates multiple +files from a single invocation, you can express that relationship by declaring +your rule to use @emph{grouped targets}. A grouped target rule uses the +separator @code{&:} (the @samp{&} here is used to imply ``all''). -When @code{make} builds any one of the grouped targets, it understands -that all the other targets in the group are also created as a result -of the invocation of the recipe. Furthermore, if only some of the -grouped targets are out of date or missing @code{make} will realize -that running the recipe will update all of the targets. +When @code{make} builds any one of the grouped targets, it understands that +all the other targets in the group are also updated as a result of the +invocation of the recipe. Furthermore, if only some of the grouped targets +are out of date or missing @code{make} will realize that running the recipe +will update all of the targets. Finally, if any of the grouped targets are +out of date, all the grouped targets are considered out of date. As an example, this rule defines a grouped target: @@ -3346,7 +3464,7 @@ Each pattern normally contains the character @samp{%} just once. When the the target name; this part is called the @dfn{stem}. The rest of the pattern must match exactly. For example, the target @file{foo.o} matches the pattern @samp{%.o}, with @samp{foo} as the stem. The targets -@file{foo.c} and @file{foo.out} do not match that pattern.@refill +@file{foo.c} and @file{foo.out} do not match that pattern. @cindex prerequisite pattern, static (not implicit) The prerequisite names for each target are made by substituting the stem @@ -3370,7 +3488,7 @@ Backslashes that are not in danger of quoting @samp{%} characters go unmolested. For example, the pattern @file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the operative @samp{%} character, and @samp{pattern\\} following it. The final two backslashes are left alone -because they cannot affect any @samp{%} character.@refill +because they cannot affect any @samp{%} character. Here is an example, which compiles each of @file{foo.o} and @file{bar.o} from the corresponding @file{.c} file: @@ -3410,7 +3528,7 @@ In this example the result of @samp{$(filter %.o,$(files))} is @file{bar.o lose.o}, and the first static pattern rule causes each of these object files to be updated by compiling the corresponding C source file. The result of @w{@samp{$(filter %.elc,$(files))}} is -@file{foo.elc}, so that file is made from @file{foo.el}.@refill +@file{foo.elc}, so that file is made from @file{foo.el}. Another example shows how to use @code{$*} in static pattern rules: @vindex $*@r{, and static pattern} @@ -3953,7 +4071,7 @@ The @samp{-s} or @samp{--silent} flag to @code{make} prevents all echoing, as if all recipes started with @samp{@@}. A rule in the makefile for the special target @code{.SILENT} without prerequisites has the same effect -(@pxref{Special Targets, ,Special Built-in Target Names}).@refill +(@pxref{Special Targets, ,Special Built-in Target Names}). @node Execution, Parallel, Echoing, Recipes @section Recipe Execution @@ -4019,8 +4137,8 @@ example: @example .ONESHELL: foo : bar/lose - cd $(@@D) - gobble $(@@F) > ../$@@ + cd $( ../$@@ @end example @noindent @@ -4215,13 +4333,12 @@ directory along your @code{PATH}. @cindex @code{-j} @cindex @code{--jobs} -GNU @code{make} knows how to execute several recipes at once. -Normally, @code{make} will execute only one recipe at a time, waiting -for it to finish before executing the next. However, the @samp{-j} or -@samp{--jobs} option tells @code{make} to execute many recipes -simultaneously. You can inhibit parallelism in a particular makefile -with the @code{.NOTPARALLEL} pseudo-target (@pxref{Special -Targets,Special Built-in Target Names}).@refill +GNU @code{make} knows how to execute several recipes at once. Normally, +@code{make} will execute only one recipe at a time, waiting for it to finish +before executing the next. However, the @samp{-j} or @samp{--jobs} option +tells @code{make} to execute many recipes simultaneously. You can inhibit +parallelism for some or all targets from within the makefile (@pxref{Parallel +Disable, ,Disabling Parallel Execution}). On MS-DOS, the @samp{-j} option has no effect, since that system doesn't support multi-processing. @@ -4243,7 +4360,7 @@ target will not be run. If a recipe fails and the @samp{-k} or @samp{--keep-going} option was not given (@pxref{Options Summary, ,Summary of Options}), @code{make} aborts execution. If make terminates for any reason (including a signal) with child processes -running, it waits for them to finish before actually exiting.@refill +running, it waits for them to finish before actually exiting. @cindex load average @cindex limiting jobs based on load @@ -4265,7 +4382,7 @@ example, @noindent will not let @code{make} start more than one job if the load average is above 2.5. The @samp{-l} option with no following number removes the -load limit, if one was given with a previous @samp{-l} option.@refill +load limit, if one was given with a previous @samp{-l} option. More precisely, when @code{make} goes to start up a job, and it already has at least one job running, it checks the current load average; if it is not @@ -4275,11 +4392,110 @@ average goes below that limit, or until all the other jobs finish. By default, there is no load limit. @menu +* Parallel Disable:: Disabling parallel execution * Parallel Output:: Handling output during parallel execution * Parallel Input:: Handling input during parallel execution @end menu -@node Parallel Output, Parallel Input, Parallel, Parallel +@node Parallel Disable, Parallel Output, Parallel, Parallel +@subsection Disabling Parallel Execution +@cindex disabling parallel execution +@cindex parallel execution, disabling + +If a makefile completely and accurately defines the dependency relationships +between all of its targets, then @code{make} will correctly build the goals +regardless of whether parallel execution is enabled or not. This is the ideal +way to write makefiles. + +However, sometimes some or all of the targets in a makefile cannot be executed +in parallel and it's not feasible to add the prerequisites needed to inform +@code{make}. In that case the makefile can use various methods to disable +parallel execution. + +@cindex .NOTPARALLEL special target +@findex .NOTPARALLEL +If the @code{.NOTPARALLEL} special target with no prerequisites is specified +anywhere then the entire instance of @code{make} will be run serially, +regardless of the parallel setting. For example: + +@example +@group +all: one two three +one two three: ; @@sleep 1; echo $@@ + +.NOTPARALLEL: +@end group +@end example + +Regardless of how @code{make} is invoked, the targets @file{one}, @file{two}, +and @file{three} will be run serially. + +If the @code{.NOTPARALLEL} special target has prerequisites, then each of +those prerequisites will be considered a target and all prerequisites of these +targets will be run serially. Note that only when building this target will +the prerequisites be run serially: if some other target lists the same +prerequisites and is not in @code{.NOTPARALLEL} then these prerequisites may +be run in parallel. For example: + +@example +@group +all: base notparallel + +base: one two three +notparallel: one two three + +one two three: ; @@sleep 1; echo $@@ + +.NOTPARALLEL: notparallel +@end group +@end example + +Here @samp{make -j base} will run the targets @file{one}, @file{two}, and +@file{three} in parallel, while @samp{make -j notparallel} will run them +serially. If you run @samp{make -j all} then they @emph{will} be run in +parallel since @file{base} lists them as prerequisites and is not serialized. + +The @code{.NOTPARALLEL} target should not have commands. + +@cindex .WAIT special target +@findex .WAIT +Finally you can control the serialization of specific prerequisites in a +fine-grained way using the @code{.WAIT} special target. When this target +appears in a prerequisite list and parallel execution is enabled, @code{make} +will not build any of the prerequisites to the @emph{right} of @code{.WAIT} +until all prerequisites to the @emph{left} of @code{.WAIT} have completed. +For example: + +@example +@group +all: one two .WAIT three +one two three: ; @@sleep 1; echo $@@ +@end group +@end example + +If parallel execution is enabled, @code{make} will try to build @file{one} and +@file{two} in parallel but will not try to build @file{three} until both are +complete. + +As with targets provided to @code{.NOTPARALLEL}, @code{.WAIT} takes effect +only when building the target in whose prerequisite list it appears. If the +same prerequisites are present in other targets, without @code{.WAIT}, then +they may still be run in parallel. Because of this, neither +@code{.NOTPARALLEL} with targets nor @code{.WAIT} are as reliable for +controlling parallel execution as defining a prerequisite relationship. +However they are easy to use and may be sufficient in less complex situations. + +The @code{.WAIT} prerequisite will not be present in any of the automatic +variables for the rule. + +You can create an actual target @code{.WAIT} in your makefile for portability +but this is not required to use this feature. If a @code{.WAIT} target is +created it should not have prerequisites or commands. + +The @code{.WAIT} feature is also implemented in other versions of @code{make} +and it's specified in the POSIX standard for @code{make}. + +@node Parallel Output, Parallel Input, Parallel Disable, Parallel @subsection Output During Parallel Execution @cindex output during parallel execution @cindex parallel execution, output during @@ -4632,7 +4848,7 @@ Execution, ,Instead of Executing the Recipes}. This special feature is only enabled if the @code{MAKE} variable appears directly in the recipe: it does not apply if the @code{MAKE} variable is referenced through expansion of another variable. In the latter case you must -use the @samp{+} token to get these special effects.@refill +use the @samp{+} token to get these special effects. Consider the command @samp{make -t} in the above example. (The @samp{-t} option marks targets as up to date without actually running @@ -4641,7 +4857,7 @@ definition of @samp{-t}, a @samp{make -t} command in the example would create a file named @file{subsystem} and do nothing else. What you really want it to do is run @samp{@w{cd subdir &&} @w{make -t}}; but that would require executing the recipe, and @samp{-t} says not to -execute recipes.@refill +execute recipes. @cindex @code{-t}, and recursion @cindex recursion, and @code{-t} @cindex @code{--touch}, and recursion @@ -4654,7 +4870,7 @@ flag that causes most recipes not to be run. The usual @code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make} (@pxref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}), so your request to touch the files, or print the -recipes, is propagated to the subsystem.@refill +recipes, is propagated to the subsystem. @node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion @subsection Communicating Variables to a Sub-@code{make} @@ -4671,7 +4887,7 @@ sub-@code{make} through the environment by explicit request. These variables are defined in the sub-@code{make} as defaults, but they do not override variables defined in the makefile used by the sub-@code{make} unless you use the @samp{-e} switch (@pxref{Options -Summary, ,Summary of Options}).@refill +Summary, ,Summary of Options}). To pass down, or @dfn{export}, a variable, @code{make} adds the variable and its value to the environment for running each line of the @@ -4680,10 +4896,8 @@ initialize its table of variable values. @xref{Environment, ,Variables from the Environment}. Except by explicit request, @code{make} exports a variable only if it -is either defined in the environment initially or set on the command -line, and if its name consists only of letters, numbers, and underscores. -Some shells cannot cope with environment variable names consisting of -characters other than letters, numbers, and underscores. +is either defined in the environment initially, or if set on the command +line and its name consists only of letters, numbers, and underscores. @cindex SHELL, exported value The value of the @code{make} variable @code{SHELL} is not exported. @@ -4707,7 +4921,7 @@ See the next section. Variables are @emph{not} normally passed down if they were created by default by @code{make} (@pxref{Implicit Variables, ,Variables Used by Implicit Rules}). The sub-@code{make} will define these for -itself.@refill +itself. @findex export If you want to export specific variables to a sub-@code{make}, use the @@ -4789,32 +5003,40 @@ export @end example @noindent -This tells @code{make} that variables which are not explicitly mentioned -in an @code{export} or @code{unexport} directive should be exported. -Any variable given in an @code{unexport} directive will still @emph{not} -be exported. If you use @code{export} by itself to export variables by -default, variables whose names contain characters other than -alphanumerics and underscores will not be exported unless specifically -mentioned in an @code{export} directive.@refill +This tells @code{make} that variables which are not explicitly mentioned in an +@code{export} or @code{unexport} directive should be exported. Any variable +given in an @code{unexport} directive will still @emph{not} be exported. @findex .EXPORT_ALL_VARIABLES -The behavior elicited by an @code{export} directive by itself was the -default in older versions of GNU @code{make}. If your makefiles depend -on this behavior and you want to be compatible with old versions of -@code{make}, you can write a rule for the special target -@code{.EXPORT_ALL_VARIABLES} instead of using the @code{export} directive. -This will be ignored by old @code{make}s, while the @code{export} -directive will cause a syntax error.@refill @cindex compatibility in exporting - -Likewise, you can use @code{unexport} by itself to tell @code{make} -@emph{not} to export variables by default. Since this is the default -behavior, you would only need to do this if @code{export} had been used -by itself earlier (in an included makefile, perhaps). You -@strong{cannot} use @code{export} and @code{unexport} by themselves to -have variables exported for some recipes and not for others. The last -@code{export} or @code{unexport} directive that appears by itself -determines the behavior for the entire run of @code{make}.@refill +The behavior elicited by an @code{export} directive by itself was the default +in older versions of GNU @code{make}. If your makefiles depend on this +behavior and you want to be compatible with old versions of @code{make}, you +can add the special target @code{.EXPORT_ALL_VARIABLES} to your makefile +instead of using the @code{export} directive. This will be ignored by old +@code{make}s, while the @code{export} directive will cause a syntax +error. + +When using @code{export} by itself or @code{.EXPORT_ALL_VARIABLES} to export +variables by default, only variables whose names consist solely of +alphanumerics and underscores will be exported. To export other variables you +must specifically mention them in an @code{export} directive. + +Adding a variable's value to the environment requires it to be expanded. If +expanding a variable has side-effects (such as the @code{info} or @code{eval} +or similar functions) then these side-effects will be seen every time a +command is invoked. You can avoid this by ensuring that such variables have +names which are not exportable by default. However, a better solution is to +@emph{not} use this ``export by default'' facility at all, and instead +explicitly @code{export} the relevant variables by name. + +You can use @code{unexport} by itself to tell @code{make} @emph{not} to export +variables by default. Since this is the default behavior, you would only need +to do this if @code{export} had been used by itself earlier (in an included +makefile, perhaps). You @strong{cannot} use @code{export} and @code{unexport} +by themselves to have variables exported for some recipes and not for others. +The last @code{export} or @code{unexport} directive that appears by itself +determines the behavior for the entire run of @code{make}. @vindex MAKELEVEL @cindex recursion, level of @@ -4823,12 +5045,12 @@ is passed down from level to level. This variable's value is a string which is the depth of the level as a decimal number. The value is @samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make}, @samp{2} for a sub-sub-@code{make}, and so on. The incrementation -happens when @code{make} sets up the environment for a recipe.@refill +happens when @code{make} sets up the environment for a recipe. The main use of @code{MAKELEVEL} is to test it in a conditional directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this way you can write a makefile that behaves one way if run recursively and -another way if run directly by you.@refill +another way if run directly by you. @vindex MAKEFILES You can use the variable @code{MAKEFILES} to cause all sub-@code{make} @@ -4837,7 +5059,7 @@ a whitespace-separated list of file names. This variable, if defined in the outer-level makefile, is passed down through the environment; then it serves as a list of extra makefiles for the sub-@code{make} to read before the usual or specified ones. @xref{MAKEFILES Variable, ,The -Variable @code{MAKEFILES}}.@refill +Variable @code{MAKEFILES}}. @node Options/Recursion, -w Option, Variables/Recursion, Recursion @subsection Communicating Options to a Sub-@code{make} @@ -4849,13 +5071,20 @@ Flags such as @samp{-s} and @samp{-k} are passed automatically to the sub-@code{make} through the variable @code{MAKEFLAGS}. This variable is set up automatically by @code{make} to contain the flag letters that @code{make} received. Thus, if you do @w{@samp{make -ks}} then -@code{MAKEFLAGS} gets the value @samp{ks}.@refill +@code{MAKEFLAGS} gets the value @samp{ks}. As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS} in its environment. In response, it takes the flags from that value and processes them as if they had been given as arguments. @xref{Options Summary, ,Summary of Options}. +The value of @code{MAKEFLAGS} is a possibly empty group of characters +representing single-letter options that take no argument, followed by a space +and any options that take arguments or which have long option names. If an +option has both single-letter and long options, the single-letter option is +always preferred. If there are no single-letter options on the command line, +then the value of @code{MAKEFLAGS} starts with a space. + @cindex command line variable definitions, and recursion @cindex variables, command line, and recursion @cindex recursion, and command line variable definitions @@ -4880,7 +5109,7 @@ definitions just as if they appeared on the command line. @cindex recursion, and @code{-o} @cindex recursion, and @code{-W} The options @samp{-C}, @samp{-f}, @samp{-o}, and @samp{-W} are not put -into @code{MAKEFLAGS}; these options are not passed down.@refill +into @code{MAKEFLAGS}; these options are not passed down. @cindex @code{-j}, and recursion @cindex @code{--jobs}, and recursion @@ -4902,10 +5131,10 @@ run in non-parallel mode. If the @w{@samp{-j}} option were passed down to sub-@code{make}s you would get many more jobs running in parallel than you asked for. If you give @samp{-j} with no numeric argument, meaning to run as many jobs as possible in parallel, this is passed -down, since multiple infinities are no more than one.@refill +down, since multiple infinities are no more than one. If you do not want to pass the other flags down, you must change the -value of @code{MAKEFLAGS}, like this: +value of @code{MAKEFLAGS}, for example like this: @example subsystem: @@ -4982,7 +5211,7 @@ to include any options that will drastically affect the actions of @code{make} and undermine the purpose of makefiles and of @code{make} itself. For instance, the @samp{-t}, @samp{-n}, and @samp{-q} options, if put in one of these variables, could have disastrous consequences and would -certainly have at least surprising and probably annoying effects.@refill +certainly have at least surprising and probably annoying effects. If you'd like to run other implementations of @code{make} in addition to GNU @code{make}, and hence do not want to add GNU @@ -5012,7 +5241,7 @@ If you use several levels of recursive @code{make} invocations, the lot easier to understand by showing each directory as @code{make} starts processing it and as @code{make} finishes processing it. For example, if @samp{make -w} is run in the directory @file{/u/gnu/make}, -@code{make} will print a line of the form:@refill +@code{make} will print a line of the form: @example make: Entering directory `/u/gnu/make'. @@ -5097,7 +5326,7 @@ foo.c : foo.y @noindent @samp{foo.y} will be substituted for the variable @samp{$^} when it occurs in -@code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}.@refill +@code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}. This is a realistic example, but this particular one is not needed in practice because @code{make} has an implicit rule to figure out these @@ -5162,7 +5391,7 @@ You may be wondering why you would want to define a recipe that does nothing. One reason this is useful is to prevent a target from getting implicit recipes (from implicit rules or the @code{.DEFAULT} special target; @pxref{Implicit Rules} and @pxref{Last Resort, -,Defining Last-Resort Default Rules}).@refill +,Defining Last-Resort Default Rules}). Empty recipes can also be used to avoid errors for targets that will be created as a side-effect of another recipe: if the target does not @@ -5194,7 +5423,9 @@ variables are called @dfn{macros}.) Variables and functions in all parts of a makefile are expanded when read, except for in recipes, the right-hand sides of variable definitions using @samp{=}, and the bodies of variable definitions -using the @code{define} directive.@refill +using the @code{define} directive. The value a variable expands to is +that of its most recent definition at the time of expansion. In other +words, variables are dynamically scoped. Variables can represent lists of file names, options to pass to compilers, programs to run, directories to look in for source files, directories to @@ -5308,10 +5539,20 @@ often improved is automatic variables (@pxref{Automatic Variables}). @cindex recursively expanded variables @cindex variables, recursively expanded -There are two ways that a variable in GNU @code{make} can have a value; -we call them the two @dfn{flavors} of variables. The two flavors are -distinguished in how they are defined and in what they do when expanded. +There are different ways that a variable in GNU @code{make} can get a value; +we call them the @dfn{flavors} of variables. The flavors are distinguished in +how they handle the values they are assigned in the makefile, and in how those +values are managed when the variable is later used and expanded. + +@menu +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. +@end menu +@node Recursive Assignment, Simple Assignment, Flavors, Flavors +@subsection Recursively Expanded Variable Assignment @cindex = The first flavor of variable is a @dfn{recursively expanded} variable. Variables of this sort are defined by lines using @samp{=} @@ -5320,7 +5561,7 @@ Variables of this sort are defined by lines using @samp{=} is installed verbatim; if it contains references to other variables, these references are expanded whenever this variable is substituted (in the course of expanding some other string). When this happens, it is -called @dfn{recursive expansion}.@refill +called @dfn{recursive expansion}. For example, @@ -5334,7 +5575,7 @@ all:;echo $(foo) @noindent will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which -expands to @samp{$(ugh)} which finally expands to @samp{Huh?}.@refill +expands to @samp{$(ugh)} which finally expands to @samp{Huh?}. This flavor of variable is the only sort supported by most other versions of @code{make}. It has its advantages and its disadvantages. @@ -5368,7 +5609,9 @@ expanded. This makes @code{make} run slower; worse, it causes the because you cannot easily control when they are called, or even how many times. -To avoid all the problems and inconveniences of recursively expanded +@node Simple Assignment, Immediate Assignment, Recursive Assignment, Flavors +@subsection Simply Expanded Variable Assignment +To avoid the problems and inconveniences of recursively expanded variables, there is another flavor: simply expanded variables. @cindex simply expanded variables @@ -5378,34 +5621,35 @@ variables, there is another flavor: simply expanded variables. @dfn{Simply expanded variables} are defined by lines using @samp{:=} or @samp{::=} (@pxref{Setting, ,Setting Variables}). Both forms are equivalent in GNU @code{make}; however only the @samp{::=} form is -described by the POSIX standard (support for @samp{::=} was added to -the POSIX standard in 2012, so older versions of @code{make} won't -accept this form either). +described by the POSIX standard (support for @samp{::=} is added to +the POSIX standard for POSIX Issue 8). -The value of a simply expanded variable is scanned -once and for all, expanding any references to other variables and -functions, when the variable is defined. The actual value of the simply -expanded variable is the result of expanding the text that you write. -It does not contain any references to other variables; it contains their -values @emph{as of the time this variable was defined}. Therefore, +The value of a simply expanded variable is scanned once, expanding any +references to other variables and functions, when the variable is +defined. Once that expansion is complete the value of the variable is +never expanded again: when the variable is used the value is copied +verbatim as the expansion. If the value contained variable references +the result of the expansion will contain their values @emph{as of the +time this variable was defined}. Therefore, @example +@group x := foo y := $(x) bar x := later +@end group @end example @noindent is equivalent to @example +@group y := foo bar x := later +@end group @end example -When a simply expanded variable is referenced, its value is substituted -verbatim. - Here is a somewhat more complicated example, illustrating the use of @samp{:=} in conjunction with the @code{shell} function. (@xref{Shell Function, , The @code{shell} Function}.) This example @@ -5454,8 +5698,10 @@ this means you can include leading spaces in a variable value by protecting them with variable references, like this: @example +@group nullstring := space := $(nullstring) # end of the line +@end group @end example @noindent @@ -5479,6 +5725,84 @@ Here the value of the variable @code{dir} is @w{@samp{/foo/bar }} (with four trailing spaces), which was probably not the intention. (Imagine something like @w{@samp{$(dir)/file}} with this definition!) +@node Immediate Assignment, Conditional Assignment, Simple Assignment, Flavors +@subsection Immediately Expanded Variable Assignment +@cindex immediate variable assignment +@cindex variables, immediate assignment +@cindex :::= + +Another form of assignment allows for immediate expansion, but unlike simple +assignment the resulting variable is recursive: it will be re-expanded again +on every use. In order to avoid unexpected results, after the value is +immediately expanded it will automatically be quoted: all instances of +@code{$} in the value after expansion will be converted into @code{$$}. This +type of assignment uses the @samp{:::=} operator. For example, + +@example +@group +var = first +OUT :::= $(var) +var = second +@end group +@end example + +@noindent +results in the @code{OUT} variable containing the text @samp{first}, while here: + +@example +@group +var = one$$two +OUT :::= $(var) +var = three$$four +@end group +@end example + +@noindent +results in the @code{OUT} variable containing the text @samp{one$$two}. The +value is expanded when the variable is assigned, so the result is the +expansion of the first value of @code{var}, @samp{one$two}; then the value is +re-escaped before the assignment is complete giving the final result of +@samp{one$$two}. + +The variable @code{OUT} is thereafter considered a recursive variable, so it +will be re-expanded when it is used. + +This seems functionally equivalent to the @samp{:=} / @samp{::=} operators, +but there are a few differences: + +First, after assignment the variable is a normal recursive variable; when you +append to it with @samp{+=} the value on the right-hand side is not expanded +immediately. If you prefer the @samp{+=} operator to expand the right-hand +side immediately you should use the @samp{:=} / @samp{::=} assignment instead. + +Second, these variables are slightly less efficient than simply expanded +variables since they do need to be re-expanded when they are used, rather than +merely copied. However since all variable references are escaped this +expansion simply un-escapes the value, it won't expand any variables or run +any functions. + +Here is another example: + +@example +@group +var = one$$two +OUT :::= $(var) +OUT += $(var) +var = three$$four +@end group +@end example + +After this, the value of @code{OUT} is the text @samp{one$$two $(var)}. When +this variable is used it will be expanded and the result will be +@samp{one$two three$four}. + +This style of assignment is equivalent to the traditional BSD @code{make} +@samp{:=} operator; as you can see it works slightly differently than the GNU +@code{make} @samp{:=} operator. The @code{:::=} operator is added to the +POSIX specification in Issue 8 to provide portability. + +@node Conditional Assignment, , Immediate Assignment, Flavors +@subsection Conditional Variable Assignment @cindex conditional variable assignment @cindex variables, conditional assignment @cindex ?= @@ -5535,7 +5859,7 @@ of the variable @var{var}, replace every @var{a} at the end of a word with When we say ``at the end of a word'', we mean that @var{a} must appear either followed by whitespace or at the end of the value in order to be replaced; other occurrences of @var{a} in the value are unaltered. For -example:@refill +example: @example foo := a.o b.o l.a c.o @@ -5559,12 +5883,10 @@ the @code{patsubst} function. It has the same form @var{a} must contain a single @samp{%} character. This case is equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}. @xref{Text Functions, ,Functions for String Substitution and Analysis}, -for a description of the @code{patsubst} function.@refill +for a description of the @code{patsubst} function. For example: @example @group -@exdent For example: - foo := a.o b.o l.a c.o bar := $(foo:%.o=%.c) @end group @@ -5583,12 +5905,9 @@ sets @samp{bar} to @samp{a.c b.c l.a c.c}. @cindex @code{$}, in variable name @cindex dollar sign (@code{$}), in variable name -Computed variable names are a complicated concept needed only for -sophisticated makefile programming. For most purposes you need not -consider them, except to know that making a variable with a dollar sign -in its name might have strange results. However, if you are the type -that wants to understand everything, or you are actually interested in -what they do, read on. +Computed variable names are an advanced concept, very useful in more +sophisticated makefile programming. In simple situations you need not +consider them, but they can be extremely useful. Variables may be referenced inside the name of a variable. This is called a @dfn{computed variable name} or a @dfn{nested variable @@ -5636,10 +5955,9 @@ a := $($(x)) defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))} which becomes @samp{$(z)} which becomes @samp{Hello}. -Nested variable references can also contain modified references and -function invocations (@pxref{Functions, ,Functions for Transforming Text}), -just like any other reference. -For example, using the @code{subst} function +Nested variable references can also contain modified references and function +invocations (@pxref{Functions, ,Functions for Transforming Text}), just like +any other reference. For example, using the @code{subst} function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}): @example @@ -5659,7 +5977,7 @@ it works: @samp{$($($(z)))} expands to @samp{$($(y))} which becomes @samp{$($(subst 1,2,$(x)))}. This gets the value @samp{variable1} from @code{x} and changes it by substitution to @samp{variable2}, so that the entire string becomes @samp{$(variable2)}, a simple variable reference -whose value is @samp{Hello}.@refill +whose value is @samp{Hello}. A computed variable name need not consist entirely of a single variable reference. It can contain several variable references, as well as some @@ -5698,7 +6016,7 @@ dirs := $($(a1)_$(df)) @noindent will give @code{dirs} the same value as @code{a_dirs}, @code{1_dirs}, @code{a_files} or @code{1_files} depending on the settings of @code{use_a} -and @code{use_dirs}.@refill +and @code{use_dirs}. Computed variable names can also be used in substitution references: @@ -5763,7 +6081,7 @@ This example defines the variables @samp{dir}, @samp{foo_sources}, and Note that @dfn{nested variable references} are quite different from @dfn{recursively expanded variables} (@pxref{Flavors, ,The Two Flavors of Variables}), though both are -used together in complex ways when doing makefile programming.@refill +used together in complex ways when doing makefile programming. @node Values, Setting, Advanced, Using Variables @section How Variables Get Their Values @@ -5780,7 +6098,12 @@ You can specify an overriding value when you run @code{make}. @item You can specify a value in the makefile, either with an assignment (@pxref{Setting, ,Setting Variables}) or with a -verbatim definition (@pxref{Multi-Line, ,Defining Multi-Line Variables}).@refill +verbatim definition (@pxref{Multi-Line, ,Defining Multi-Line Variables}). + +@item +You can specify a short-lived value with the @code{let} function +(@pxref{Let Function}) or with the @code{foreach} function +(@pxref{Foreach Function}). @item Variables in the environment become @code{make} variables. @@ -5803,27 +6126,30 @@ Several variables have constant initial values. @cindex = @cindex := @cindex ::= +@cindex :::= @cindex ?= @cindex != -To set a variable from the makefile, write a line starting with the -variable name followed by @samp{=}, @samp{:=}, or @samp{::=}. Whatever -follows the @samp{=}, @samp{:=}, or @samp{::=} on the line becomes the -value. For example, +To set a variable from the makefile, write a line starting with the variable +name followed by one of the assignment operators @samp{=}, @samp{:=}, +@samp{::=}, or @samp{:::=}. Whatever follows the operator and any initial +whitespace on the line becomes the value. For example, @example objects = main.o foo.o bar.o utils.o @end example @noindent -defines a variable named @code{objects}. Whitespace around the variable -name and immediately after the @samp{=} is ignored. +defines a variable named @code{objects} to contain the value @samp{main.o +foo.o bar.o utils.o}. Whitespace around the variable name and immediately +after the @samp{=} is ignored. -Variables defined with @samp{=} are @dfn{recursively expanded} -variables. Variables defined with @samp{:=} or @samp{::=} are -@dfn{simply expanded} variables; these definitions can contain -variable references which will be expanded before the definition is -made. @xref{Flavors, ,The Two Flavors of Variables}. +Variables defined with @samp{=} are @dfn{recursively expanded} variables. +Variables defined with @samp{:=} or @samp{::=} are @dfn{simply expanded} +variables; these definitions can contain variable references which will be +expanded before the definition is made. Variables defined with @samp{:::=} +are @dfn{immediately expanded} variables. The different assignment operators +are described in @xref{Flavors, ,The Two Flavors of Variables}. The variable name may contain function and variable references, which are expanded when the line is read to find the actual variable name to use. @@ -5933,13 +6259,12 @@ originally. @xref{Flavors, ,The Two Flavors of Variables}, for an explanation of the two flavors of variables. When you add to a variable's value with @samp{+=}, @code{make} acts -essentially as if you had included the extra text in the initial -definition of the variable. If you defined it first with @samp{:=} or -@samp{::=}, making it a simply-expanded variable, @samp{+=} adds to -that simply-expanded definition, and expands the new text before -appending it to the old value just as @samp{:=} does (see -@ref{Setting, ,Setting Variables}, for a full explanation of -@samp{:=} or @samp{::=}). In fact, +essentially as if you had included the extra text in the initial definition of +the variable. If you defined it first with @samp{:=} or @samp{::=}, making it +a simply-expanded variable, @samp{+=} adds to that simply-expanded definition, +and expands the new text before appending it to the old value just as +@samp{:=} does (see @ref{Setting, ,Setting Variables}, for a full explanation +of @samp{:=} or @samp{::=}). In fact, @example variable := value @@ -5956,15 +6281,9 @@ variable := $(variable) more @end example On the other hand, when you use @samp{+=} with a variable that you defined -first to be recursively-expanded using plain @samp{=}, @code{make} does -something a bit different. Recall that when you define a -recursively-expanded variable, @code{make} does not expand the value you set -for variable and function references immediately. Instead it stores the text -verbatim, and saves these variable and function references to be expanded -later, when you refer to the new variable (@pxref{Flavors, ,The Two Flavors -of Variables}). When you use @samp{+=} on a recursively-expanded variable, -it is this unexpanded text to which @code{make} appends the new text you -specify. +first to be recursively-expanded using plain @samp{=} or @samp{:::=}, +@code{make} appends the un-expanded text to the existing value, whatever it +is. This means that @example @group @@ -6032,7 +6351,7 @@ If a variable has been set with a command argument then ordinary assignments in the makefile are ignored. If you want to set the variable in the makefile even though it was set with a command argument, you can use an @code{override} directive, which is a line that -looks like this:@refill +looks like this: @example override @var{variable} = @var{value} @@ -6104,7 +6423,7 @@ directive. This directive has an unusual syntax which allows newline characters to be included in the value, which is convenient for defining both canned sequences of commands (@pxref{Canned Recipes, ,Defining Canned Recipes}), and also sections of makefile syntax to -use with @code{eval} (@pxref{Eval Function}).@refill +use with @code{eval} (@pxref{Eval Function}). The @code{define} directive is followed on the same line by the name of the variable being defined and an (optional) assignment operator, @@ -6193,6 +6512,7 @@ In such situations you may want to use the @code{undefine} directive to make a variable appear as if it was never set. For example: @example +@group foo := foo bar = bar @@ -6201,6 +6521,7 @@ undefine bar $(info $(origin foo)) $(info $(flavor bar)) +@end group @end example This example will print ``undefined'' for both variables. @@ -6234,14 +6555,13 @@ because you know that no makefile will use them for other things. (Note this is not totally reliable; some makefiles set @code{CFLAGS} explicitly and therefore are not affected by the value in the environment.) -When @code{make} runs a recipe, variables defined in the -makefile are placed into the environment of each shell. This allows -you to pass values to sub-@code{make} invocations (@pxref{Recursion, -,Recursive Use of @code{make}}). By default, only variables that came -from the environment or the command line are passed to recursive -invocations. You can use the @code{export} directive to pass other -variables. @xref{Variables/Recursion, , Communicating Variables to a -Sub-@code{make}}, for full details. +When @code{make} runs a recipe, some variables defined in the makefile +are placed into the environment of each command @code{make} invokes. +By default, only variables that came from the @code{make}'s +environment or set on its command line are placed into the environment +of the commands. You can use the @code{export} directive to pass +other variables. @xref{Variables/Recursion, , Communicating Variables +to a Sub-@code{make}}, for full details. Other use of variables from the environment is not recommended. It is not wise for makefiles to depend for their functioning on environment variables @@ -6255,7 +6575,7 @@ Such problems would be especially likely with the variable the user's choice of interactive shell. It would be very undesirable for this choice to affect @code{make}; so, @code{make} handles the @code{SHELL} environment variable in a special way; see @ref{Choosing -the Shell}.@refill +the Shell}. @node Target-specific, Pattern-specific, Environment, Using Variables @section Target-specific Variable Values @@ -6264,10 +6584,12 @@ the Shell}.@refill Variable values in @code{make} are usually global; that is, they are the same regardless of where they are evaluated (unless they're reset, of -course). One exception to that is automatic variables +course). Exceptions to that are variables defined with the @code{let} +function (@pxref{Let Function}) or the @code{foreach} function +(@pxref{Foreach Function}, and automatic variables (@pxref{Automatic Variables}). -The other exception is @dfn{target-specific variable values}. This +Another exception are @dfn{target-specific variable values}. This feature allows you to define different values for the same variable, based on the target that @code{make} is currently building. As with automatic variables, these values are only available within the context @@ -6280,20 +6602,21 @@ Set a target-specific variable value like this: @end example Target-specific variable assignments can be prefixed with any or all of the -special keywords @code{export}, @code{override}, or @code{private}; -these apply their normal behavior to this instance of the variable only. +special keywords @code{export}, @code{unexport}, @code{override}, or +@code{private}; these apply their normal behavior to this instance of the +variable only. Multiple @var{target} values create a target-specific variable value for each member of the target list individually. -The @var{variable-assignment} can be any valid form of assignment; -recursive (@samp{=}), simple (@samp{:=} or @samp{::=}), appending -(@samp{+=}), or conditional (@samp{?=}). All variables that appear -within the @var{variable-assignment} are evaluated within the context -of the target: thus, any previously-defined target-specific variable -values will be in effect. Note that this variable is actually -distinct from any ``global'' value: the two variables do not have to -have the same flavor (recursive vs.@: simple). +The @var{variable-assignment} can be any valid form of assignment; recursive +(@samp{=}), simple (@samp{:=} or @samp{::=}), immediate (@samp{::=}), +appending (@samp{+=}), or conditional (@samp{?=}). All variables that appear +within the @var{variable-assignment} are evaluated within the context of the +target: thus, any previously-defined target-specific variable values will be +in effect. Note that this variable is actually distinct from any ``global'' +value: the two variables do not have to have the same flavor (recursive vs.@: +simple). Target-specific variables have the same priority as any other makefile variable. Variables provided on the command line (and in the @@ -6603,10 +6926,33 @@ Supports the @code{-L} (@code{--check-symlink-times}) flag. Supports ``else if'' non-nested conditionals. @xref{Conditional Syntax, ,Syntax of Conditionals}. +@item extra-prereqs +Supports the @code{.EXTRA_PREREQS} special target. + +@item grouped-target +Supports grouped target syntax for explicit rules. @xref{Multiple Targets, +,Multiple Targets in a Rule}. + +@item guile +Has GNU Guile available as an embedded extension language. +@xref{Guile Integration, ,GNU Guile Integration}. + @item jobserver Supports ``job server'' enhanced parallel builds. @xref{Parallel, ,Parallel Execution}. +@item jobserver-fifo +Supports ``job server'' enhanced parallel builds using named pipes. +@xref{Integrating make, ,Integrating GNU @code{make}}. + +@item load +Supports dynamically loadable objects for creating custom extensions. +@xref{Loading Objects, ,Loading Dynamic Objects}. + +@item notintermediate +Supports the @code{.NOTINTERMEDIATE} special target. +@xref{Integrating make, ,Integrating GNU @code{make}}. + @item oneshell Supports the @code{.ONESHELL} special target. @xref{One Shell, ,Using One Shell}. @@ -6615,9 +6961,16 @@ One Shell}. Supports order-only prerequisites. @xref{Prerequisite Types, ,Types of Prerequisites}. +@item output-sync +Supports the @code{--output-sync} command line option. @xref{Options Summary, +,Summary of Options}. + @item second-expansion Supports secondary expansion of prerequisite lists. +@item shell-export +Supports exporting @code{make} variables to @code{shell} functions. + @item shortest-stem Uses the ``shortest stem'' method of choosing which pattern, of multiple applicable options, will be used. @xref{Pattern Match, ,How @@ -6629,20 +6982,14 @@ Supports target-specific and pattern-specific variable assignments. @item undefine Supports the @code{undefine} directive. @xref{Undefine Directive}. - -@item guile -Has GNU Guile available as an embedded extension language. -@xref{Guile Integration, ,GNU Guile Integration}. - -@item load -Supports dynamically loadable objects for creating custom extensions. -@xref{Loading Objects, ,Loading Dynamic Objects}. @end table @vindex .INCLUDE_DIRS @r{(list of include directories)} @item .INCLUDE_DIRS Expands to a list of directories that @code{make} searches for included makefiles (@pxref{Include, , Including Other Makefiles}). +Note that modifying this variable's value does not change the list of +directories which are searched. @vindex .EXTRA_PREREQS @r{(prerequisites not added to automatic variables)} @item .EXTRA_PREREQS @@ -6666,7 +7013,8 @@ as an argument to link command. You'll need something like this: @example myprog: myprog.o file1.o file2.o $(CC) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $(filter-out $(CC),$^) $(LDLIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ \ + $(filter-out $(CC),$^) $(LDLIBS) @end example Then consider having multiple extra prerequisites: they would all have @@ -6706,7 +7054,7 @@ or ignored depending on the values of variables. Conditionals can compare the value of one variable to another, or the value of a variable to a constant string. Conditionals control what @code{make} actually ``sees'' in the makefile, so they @emph{cannot} be used to -control recipes at the time of execution.@refill +control recipes at the time of execution. @menu * Conditional Example:: Example of a conditional @@ -6966,7 +7314,7 @@ the condition is true, @code{make} reads the lines of the @var{text-if-true} as part of the makefile; if the condition is false, @code{make} ignores those lines completely. It follows that syntactic units of the makefile, such as rules, may safely be split across the -beginning or the end of the conditional.@refill +beginning or the end of the conditional. @code{make} evaluates conditionals when it reads a makefile. Consequently, you cannot use automatic variables in the tests of @@ -6988,17 +7336,23 @@ You can write a conditional that tests @code{make} command flags such as This is useful when @code{touch} is not enough to make a file appear up to date. +Recall that @code{MAKEFLAGS} will put all single-letter options (such as +@samp{-t}) into the first word, and that word will be empty if no +single-letter options were given. To work with this, it's helpful to add a +value at the start to ensure there's a word: for example +@samp{-$(MAKEFLAGS)}. + The @code{findstring} function determines whether one string appears as a -substring of another. If you want to test for the @samp{-t} flag, -use @samp{t} as the first string and the value of @code{MAKEFLAGS} as -the other. +substring of another. If you want to test for the @samp{-t} flag, use +@samp{t} as the first string and the first word of @code{MAKEFLAGS} as the +other. For example, here is how to arrange to use @samp{ranlib -t} to finish marking an archive file up to date: @example archive.a: @dots{} -ifneq (,$(findstring t,$(MAKEFLAGS))) +ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) +touch archive.a +ranlib -t archive.a else @@ -7028,6 +7382,7 @@ be substituted. * Text Functions:: General-purpose text manipulation functions. * File Name Functions:: Functions for manipulating file names. * Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. * Foreach Function:: Repeat some text with controlled variation. * File Function:: Write text to a file. * Call Function:: Expand a user-defined function. @@ -7066,30 +7421,48 @@ Here @var{function} is a function name; one of a short list of names that are part of @code{make}. You can also essentially create your own functions by using the @code{call} built-in function. -The @var{arguments} are the arguments of the function. They are -separated from the function name by one or more spaces or tabs, and if -there is more than one argument, then they are separated by commas. -Such whitespace and commas are not part of an argument's value. The -delimiters which you use to surround the function call, whether -parentheses or braces, can appear in an argument only in matching pairs; -the other kind of delimiters may appear singly. If the arguments -themselves contain other function calls or variable references, it is -wisest to use the same kind of delimiters for all the references; write -@w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst a,b,$@{x@})}}. This -is because it is clearer, and because only one type of delimiter is -matched to find the end of the reference. - -The text written for each argument is processed by substitution of -variables and function calls to produce the argument value, which -is the text on which the function acts. The substitution is done in the -order in which the arguments appear. - -Commas and unmatched parentheses or braces cannot appear in the text of an -argument as written; leading spaces cannot appear in the text of the first -argument as written. These characters can be put into the argument value -by variable substitution. First define variables @code{comma} and -@code{space} whose values are isolated comma and space characters, then -substitute these variables where such characters are wanted, like this: +The @var{arguments} are the arguments of the function. They are separated +from the function name by one or more spaces or tabs, and if there is more +than one argument, then they are separated by commas. Such whitespace and +commas are not part of an argument's value. The delimiters which you use to +surround the function call, whether parentheses or braces, can appear in an +argument only in matching pairs; the other kind of delimiters may appear +singly. If the arguments themselves contain other function calls or variable +references, it is wisest to use the same kind of delimiters for all the +references; write @w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst +a,b,$@{x@})}}. This is because it is clearer, and because only one type of +delimiter is matched to find the end of the reference. + +Each argument is expanded before the function is invoked, unless otherwise +noted below. The substitution is done in the order in which the arguments +appear. + +@subsubheading Special Characters +@cindex special characters in function arguments +@cindex function arguments, special characters in + +When using characters that are special to @code{make} as function arguments, +you may need to hide them. GNU @code{make} doesn't support escaping +characters with backslashes or other escape sequences; however, because +arguments are split before they are expanded you can hide them by putting them +into variables. + +Characters you may need to hide include: + +@itemize @bullet +@item +Commas +@item +Initial whitespace in the first argument +@item +Unmatched open parenthesis or brace +@item +An open parenthesis or brace if you don't want it to start a matched pair +@end itemize + +For example, you can define variables @code{comma} and @code{space} whose +values are isolated comma and space characters, then substitute these +variables where such characters are wanted, like this: @example @group @@ -7132,9 +7505,10 @@ Finds whitespace-separated words in @var{text} that match @var{pattern} may contain a @samp{%} which acts as a wildcard, matching any number of any characters within a word. If @var{replacement} also contains a @samp{%}, the @samp{%} is replaced -by the text that matched the @samp{%} in @var{pattern}. Only the first -@samp{%} in the @var{pattern} and @var{replacement} is treated this -way; any subsequent @samp{%} is unchanged.@refill +by the text that matched the @samp{%} in @var{pattern}. Words that do +not match the pattern are kept without change in the output. Only the +first @samp{%} in the @var{pattern} and @var{replacement} is treated +this way; any subsequent @samp{%} is unchanged. @cindex @code{%}, quoting in @code{patsubst} @cindex @code{%}, quoting with @code{\} (backslash) @@ -7151,7 +7525,7 @@ substituted into it. Backslashes that are not in danger of quoting @file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the operative @samp{%} character, and @samp{pattern\\} following it. The final two backslashes are left alone because they cannot affect any -@samp{%} character.@refill +@samp{%} character. Whitespace between words is folded into single space characters; leading and trailing whitespace is discarded. @@ -7243,7 +7617,7 @@ endif @noindent Replacing the variable reference @w{@samp{$(needs_made)}} with the function call @w{@samp{$(strip $(needs_made))}} in the @code{ifneq} -directive would make it more robust.@refill +directive would make it more robust. @item $(findstring @var{find},@var{in}) @findex findstring @@ -7263,7 +7637,7 @@ $(findstring a,b c) @noindent produce the values @samp{a} and @samp{} (the empty string), respectively. @xref{Testing Flags}, for a practical application of -@code{findstring}.@refill +@code{findstring}. @need 750 @findex filter @@ -7273,7 +7647,7 @@ respectively. @xref{Testing Flags}, for a practical application of Returns all whitespace-separated words in @var{text} that @emph{do} match any of the @var{pattern} words, removing any words that @emph{do not} match. The patterns are written using @samp{%}, just like the patterns -used in the @code{patsubst} function above.@refill +used in the @code{patsubst} function above. The @code{filter} function can be used to separate out different types of strings (such as file names) in a variable. For example: @@ -7288,7 +7662,7 @@ foo: $(sources) says that @file{foo} depends of @file{foo.c}, @file{bar.c}, @file{baz.s} and @file{ugh.h} but only @file{foo.c}, @file{bar.c} and @file{baz.s} should be specified in the command to the -compiler.@refill +compiler. @item $(filter-out @var{pattern}@dots{},@var{text}) @findex filter-out @@ -7297,7 +7671,7 @@ compiler.@refill Returns all whitespace-separated words in @var{text} that @emph{do not} match any of the @var{pattern} words, removing the words that @emph{do} match one or more. This is the exact opposite of the @code{filter} -function.@refill +function. For example, given: @@ -7371,13 +7745,11 @@ $(wordlist 2, 3, foo bar baz) @noindent returns @samp{bar baz}. -@c Following item phrased to prevent overfull hbox. --RJC 17 Jul 92 @item $(words @var{text}) @findex words @cindex words, finding number -Returns the number of words in @var{text}. -Thus, the last word of @var{text} is -@w{@code{$(word $(words @var{text}),@var{text})}}.@refill +Returns the number of words in @var{text}. Thus, the last word of @var{text} +is @w{@code{$(word $(words @var{text}),@var{text})}}. @item $(firstword @var{names}@dots{}) @findex firstword @@ -7395,7 +7767,7 @@ $(firstword foo bar) @noindent produces the result @samp{foo}. Although @code{$(firstword @var{text})} is the same as @code{$(word 1,@var{text})}, the -@code{firstword} function is retained for its simplicity.@refill +@code{firstword} function is retained for its simplicity. @item $(lastword @var{names}@dots{}) @@ -7414,7 +7786,7 @@ $(lastword foo bar) produces the result @samp{bar}. Although @code{$(lastword @var{text})} is the same as @code{$(word $(words @var{text}),@var{text})}, the @code{lastword} function was added for its simplicity and better -performance.@refill +performance. @end table @@ -7425,7 +7797,7 @@ prerequisite files (@pxref{General Search, , @code{VPATH} Search Path for All Prerequisites}). This example shows how to tell the C compiler to search for header files in the same list of -directories.@refill +directories. The value of @code{VPATH} is a list of directories separated by colons, such as @samp{src:../headers}. First, the @code{subst} function is used to @@ -7595,7 +7967,7 @@ replaced with a single space. This function can merge the results of the @code{dir} and @code{notdir} functions, to produce the original list of files which -was given to those two functions.@refill +was given to those two functions. @item $(wildcard @var{pattern}) @findex wildcard @@ -7628,11 +8000,11 @@ the file names to refer to an existing file or directory. Use the @code{wildcard} function to test for existence. @end table -@node Conditional Functions, Foreach Function, File Name Functions, Functions +@node Conditional Functions, Let Function, File Name Functions, Functions @section Functions for Conditionals @findex if @cindex conditional expansion -There are three functions that provide conditional expansion. A key +There are four functions that provide conditional expansion. A key aspect of these functions is that not all of the arguments are expanded initially. Only those arguments which need to be expanded, will be expanded. @@ -7679,16 +8051,116 @@ empty string the processing stops and the result of the expansion is the empty string. If all arguments expand to a non-empty string then the result of the expansion is the expansion of the last argument. +@item $(intcmp @var{lhs},@var{rhs}[,@var{lt-part}[,@var{eq-part}[,@var{gt-part}]]]) +@findex intcmp +The @code{intcmp} function provides support for numerical comparison of +integers. This function has no counterpart among the GNU @code{make} makefile +conditionals. + +The left-hand side, @var{lhs}, and right-hand side, @var{rhs}, are expanded +and parsed as integral numbers in base 10. Expansion of the remaining +arguments is controlled by how the numerical left-hand side compares to the +numerical right-hand side. + +If there are no further arguments, then the function expands to empty if the +left-hand side and right-hand side do not compare equal, or to their numerical +value if they do compare equal. + +Else if the left-hand side is strictly less than the right-hand side, the +@code{intcmp} function evaluates to the expansion of the third argument, +@var{lt-part}. If both sides compare equal, then the @code{intcmp} function +evaluates to the expansion of the fourth argument, @var{eq-part}. If the +left-hand side is strictly greater than the right-hand side, then the +@code{intcmp} function evaluates to the expansion of the fifth argument, +@var{gt-part}. + +If @var{gt-part} is missing, it defaults to @var{eq-part}. If @var{eq-part} +is missing, it defaults to the empty string. Thus both @samp{$(intcmp +9,7,hello)} and @samp{$(intcmp 9,7,hello,world,)} evaluate to the empty +string, while @samp{$(intcmp 9,7,hello,world)} (notice the absence of a comma +after @code{world}) evaluates to @samp{world}. + @end table -@node Foreach Function, File Function, Conditional Functions, Functions +@node Let Function, Foreach Function, Conditional Functions, Functions +@section The @code{let} Function +@findex let +@cindex variables, local + +The @code{let} function provides a means to limit the scope of a +variable. The assignment of the named variables in a @code{let} +expression is in effect only within the text provided by the +@code{let} expression, and this assignment doesn't impact that named +variable in any outer scope. + +Additionally, the @code{let} function enables list unpacking by +assigning all unassigned values to the last named variable. + +The syntax of the @code{let} function is: + +@example +$(let @var{var} [@var{var} ...],[@var{list}],@var{text}) +@end example + +@noindent +The first two arguments, @var{var} and @var{list}, are expanded before +anything else is done; note that the last argument, @var{text}, is +@strong{not} expanded at the same time. Next, each word of the +expanded value of @var{list} is bound to each of the variable names, +@var{var}, in turn, with the final variable name being bound to the +remainder of the expanded @var{list}. In other words, the first word +of @var{list} is bound to the first variable @var{var}, the second +word to the second variable @var{var}, and so on. + +If there are more variable names in @var{var} than there are words in +@var{list}, the remaining @var{var} variable names are set to the +empty string. If there are fewer @var{var}s than words in @var{list} +then the last @var{var} is set to all remaining words in @var{list}. + +The variables in @var{var} are assigned as simply-expanded variables +during the execution of @code{let}. @xref{Flavors, ,The Two Flavors +of Variables}. + +After all variables are thus bound, @var{text} is expanded to provide +the result of the @code{let} function. + +For example, this macro reverses the order of the words in the list +that it is given as its first argument: + +@example +reverse = $(let first rest,$1,\ + $(if $(rest),$(call reverse,$(rest)) )$(first)) + +all: ; @@echo $(call reverse,d c b a) +@end example + +@noindent +will print @code{a b c d}. When first called, @code{let} will expand +@var{$1} to @code{d c b a}. It will then assign @var{first} to +@code{d} and assign @var{rest} to @code{c b a}. It will then expand +the if-statement, where @code{$(rest)} is not empty so we recursively +invoke the @var{reverse} function with the value of @var{rest} which +is now @code{c b a}. The recursive invocation of @code{let} assigns +@var{first} to @code{c} and @var{rest} to @code{b a}. The recursion +continues until @code{let} is called with just a single value, +@code{a}. Here @var{first} is @code{a} and @var{rest} is empty, so we +do not recurse but simply expand @code{$(first)} to @code{a} and +return, which adds @code{ b}, etc. + +After the @var{reverse} call is complete, the @var{first} and +@var{rest} variables are no longer set. If variables by those names +existed beforehand, they are not affected by the expansion of the +@code{reverse} macro. + +@node Foreach Function, File Function, Let Function, Functions @section The @code{foreach} Function @findex foreach @cindex words, iterating over -The @code{foreach} function is very different from other functions. It -causes one piece of text to be used repeatedly, each time with a different -substitution performed on it. It resembles the @code{for} command in the +The @code{foreach} function is similar to the @code{let} function, but very +different from other functions. It causes one piece of text to be used +repeatedly, each time with a different substitution performed on it. The +@code{foreach} function resembles the @code{for} command in the shell @code{sh} and the @code{foreach} command in the C-shell @code{csh}. The syntax of the @code{foreach} function is: @@ -7747,14 +8219,15 @@ actual function call to be re-expanded under the control of @code{foreach}; a simply-expanded variable would not do, since @code{wildcard} would be called only once at the time of defining @code{find_files}. -The @code{foreach} function has no permanent effect on the variable -@var{var}; its value and flavor after the @code{foreach} function call are -the same as they were beforehand. The other values which are taken from -@var{list} are in effect only temporarily, during the execution of -@code{foreach}. The variable @var{var} is a simply-expanded variable -during the execution of @code{foreach}. If @var{var} was undefined -before the @code{foreach} function call, it is undefined after the call. -@xref{Flavors, ,The Two Flavors of Variables}.@refill +Like the @code{let} function, the @code{foreach} function has no permanent +effect on the variable @var{var}; its value and flavor after the +@code{foreach} function call are the same as they were beforehand. The +other values which are taken from @var{list} are in effect only +temporarily, during the execution of @code{foreach}. The variable +@var{var} is a simply-expanded variable during the execution of +@code{foreach}. If @var{var} was undefined before the @code{foreach} +function call, it is undefined after the call. +@xref{Flavors, ,The Two Flavors of Variables}. You must take care when using complex variable expressions that result in variable names because many strange things are valid variable names, but @@ -7898,7 +8371,7 @@ foo = $(call reverse,a,b) @end smallexample @noindent -Here @var{foo} will contain @samp{b a}. +Here @code{foo} will contain @samp{b a}. This one is slightly more interesting: it defines a macro to search for the first instance of a program in @code{PATH}: @@ -7910,7 +8383,7 @@ LS := $(call pathsearch,ls) @end smallexample @noindent -Now the variable LS contains @code{/bin/ls} or similar. +Now the variable @code{LS} contains @code{/bin/ls} or similar. The @code{call} function can be nested. Each recursive invocation gets its own local values for @code{$(1)}, etc.@: that mask the values of @@ -7921,14 +8394,14 @@ higher-level @code{call}. For example, here is an implementation of a map = $(foreach a,$(2),$(call $(1),$(a))) @end smallexample -Now you can @var{map} a function that normally takes only one argument, +Now you can @code{map} a function that normally takes only one argument, such as @code{origin}, to multiple values in one step: @smallexample o = $(call map,origin,o map MAKE) @end smallexample -and end up with @var{o} containing something like @samp{file file default}. +and end up with @code{o} containing something like @samp{file file default}. A final caution: be careful when adding whitespace to the arguments to @code{call}. As with other functions, any whitespace contained in the @@ -8096,7 +8569,7 @@ if @var{variable} was inherited from the environment provided to if @var{variable} was inherited from the environment provided to @code{make}, and is overriding a setting for @var{variable} in the makefile as a result of the @w{@samp{-e}} option (@pxref{Options -Summary, ,Summary of Options}).@refill +Summary, ,Summary of Options}). @item file @@ -8128,7 +8601,7 @@ definition. This could be done by using an @code{override} directive in @file{foo}, giving that definition precedence over the later definition in @file{bar}; unfortunately, the @code{override} directive would also override any command line definitions. So, @file{bar} could -include:@refill +include: @example @group @@ -8273,21 +8746,25 @@ The @code{shell} function is unlike any other function other than the (@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it communicates with the world outside of @code{make}. -The @code{shell} function performs the same function that backquotes -(@samp{`}) perform in most shells: it does @dfn{command expansion}. -This means that it takes as an argument a shell command and evaluates -to the output of the command. The only processing @code{make} does on -the result is to convert each newline (or carriage-return / newline -pair) to a single space. If there is a trailing (carriage-return -and) newline it will simply be removed.@refill +The @code{shell} function provides for @code{make} the same facility that +backquotes (@samp{`}) provide in most shells: it does @dfn{command expansion}. +This means that it takes as an argument a shell command and expands to the +output of the command. The only processing @code{make} does on the result is +to convert each newline (or carriage-return / newline pair) to a single space. +If there is a trailing (carriage-return and) newline it will simply be +removed. The commands run by calls to the @code{shell} function are run when the -function calls are expanded (@pxref{Reading Makefiles, , How -@code{make} Reads a Makefile}). Because this function involves -spawning a new shell, you should carefully consider the performance -implications of using the @code{shell} function within recursively -expanded variables vs.@: simply expanded variables (@pxref{Flavors, ,The -Two Flavors of Variables}). +function calls are expanded (@pxref{Reading Makefiles, , How @code{make} Reads +a Makefile}). Because this function involves spawning a new shell, you should +carefully consider the performance implications of using the @code{shell} +function within recursively expanded variables vs.@: simply expanded variables +(@pxref{Flavors, ,The Two Flavors of Variables}). + +An alternative to the @code{shell} function is the @samp{!=} assignment +operator; it provides a similar behavior but has subtle differences +(@pxref{Setting, , Setting Variables}). The @samp{!=} assignment operator is +included in newer POSIX standards. @vindex .SHELLSTATUS After the @code{shell} function or @samp{!=} assignment operator is @@ -8311,7 +8788,32 @@ files := $(shell echo *.c) sets @code{files} to the expansion of @samp{*.c}. Unless @code{make} is using a very strange shell, this has the same result as @w{@samp{$(wildcard *.c)}} (as long as at least one @samp{.c} file -exists).@refill +exists). + +All variables that are marked as @code{export} will also be passed to the +shell started by the @code{shell} function. It is possible to create a +variable expansion loop: consider this @file{makefile}: + +@example +export HI = $(shell echo hi) +all: ; @@echo $$HI +@end example + +When @code{make} wants to run the recipe it must add the variable @var{HI} to +the environment; to do so it must be expanded. The value of this variable +requires an invocation of the @code{shell} function, and to invoke it we must +create its environment. Since @var{HI} is exported, we need to expand it to +create its environment. And so on. In this obscure case @code{make} will use +the value of the variable from the environment provided to @code{make}, or +else the empty string if there was none, rather than looping or issuing an +error. This is often what you want; for example: + +@example +export PATH = $(shell echo /usr/local/bin:$$PATH) +@end example + +However, it would be simpler and more efficient to use a simply-expanded +variable here (@samp{:=}) in the first place. @node Guile Function, , Shell Function, Functions @section The @code{guile} Function @@ -8372,6 +8874,7 @@ determines that some target is not already up to date. an alternate compiler and other things. * Testing:: How to proceed past some errors, to test compilation. +* Temporary Files:: Where @code{make} keeps its temporary files. * Options Summary:: Summary of Options @end menu @@ -8392,7 +8895,7 @@ makefiles. If you do not use the @samp{-f} or @samp{--file} flag, the default is to try @file{GNUmakefile}, @file{makefile}, and @file{Makefile}, in that order, and use the first of these three which exists or can be made -(@pxref{Makefiles, ,Writing Makefiles}).@refill +(@pxref{Makefiles, ,Writing Makefiles}). @node Goals, Instead of Execution, Makefile Arguments, Running @section Arguments to Specify the Goals @@ -8431,13 +8934,13 @@ should be used only in special circumstances. An example of appropriate use is to avoid including @file{.d} files during @code{clean} rules (@pxref{Automatic Prerequisites}), so @code{make} won't create them only to immediately remove them -again:@refill +again: @example @group sources = foo.c bar.c -ifneq ($(MAKECMDGOALS),clean) +ifeq (,$(filter clean,$(MAKECMDGOALS)) include $(sources:.c=.d) endif @end group @@ -8596,7 +9099,7 @@ needed. files' modification times are recorded by @code{make} as being the present time, although the actual modification times remain the same. You can use the @samp{-W} flag in conjunction with the @samp{-n} flag -to see what would happen if you were to modify specific files.@refill +to see what would happen if you were to modify specific files. @end table With the @samp{-n} flag, @code{make} prints the recipe that it would @@ -8643,12 +9146,12 @@ If you also use the @samp{-n} or @samp{-q} flag, you can see what Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually executing recipes, the @samp{-W} flag can direct @code{make} to act as if some files had been modified, without actually running the recipes -for those files.@refill +for those files. @end itemize Note that the options @samp{-p} and @samp{-v} allow you to obtain other information about @code{make} or about the makefiles in use -(@pxref{Options Summary, ,Summary of Options}).@refill +(@pxref{Options Summary, ,Summary of Options}). @node Avoiding Compilation, Overriding, Instead of Execution, Running @section Avoiding Recompilation of Some Files @@ -8763,7 +9266,7 @@ overridden. This is to use the @code{override} directive, which is a line that looks like this: @samp{override @var{variable} = @var{value}} (@pxref{Override Directive, ,The @code{override} Directive}). -@node Testing, Options Summary, Overriding, Running +@node Testing, Temporary Files, Overriding, Running @section Testing the Compilation of a Program @cindex testing compilation @cindex compilation, testing @@ -8791,7 +9294,7 @@ after failed shell commands, @samp{make -k} will continue as much as possible after discovering that it does not know how to make a target or prerequisite file. This will always cause an error message, but without @samp{-k}, it is a fatal error (@pxref{Options Summary, -,Summary of Options}).@refill +,Summary of Options}). The usual behavior of @code{make} assumes that your purpose is to get the goals up to date; once @code{make} learns that this is impossible, it might @@ -8801,7 +9304,35 @@ program, perhaps to find several independent problems so that you can correct them all before the next attempt to compile. This is why Emacs' @kbd{M-x compile} command passes the @samp{-k} flag by default. -@node Options Summary, , Testing, Running +@node Temporary Files, Options Summary, Testing, Running +@section Temporary Files +@cindex temporary files + +In some situations, @code{make} will need to create its own temporary files. +These files must not be disturbed while @code{make} is running, including all +recursively-invoked instances of @code{make}. + +@cindex @code{MAKE_TMPDIR} +If the environment variable @code{MAKE_TMPDIR} is set then all temporary files +created by @code{make} will be placed there. + +@cindex @code{TMPDIR} +@cindex @code{TMP} +@cindex @code{TEMP} +If @code{MAKE_TMPDIR} is not set, then the standard location for temporary +files for the current operating system will be used. For POSIX systems this +will be the location set in the @code{TMPDIR} environment variable, or else +the system's default location (e.g., @file{/tmp}) is used. On Windows, +first @code{TMP} then @code{TEMP} will be checked, then @code{TMPDIR}, and +finally the system default temporary file location will be used. + +Note that this directory must already exist or @code{make} will fail: +@code{make} will not attempt to create it. + +These variables @emph{cannot} be set from within a makefile: GNU @code{make} +must have access to this location before it begins reading the makefiles. + +@node Options Summary, , Temporary Files, Running @section Summary of Options @cindex options @cindex flags @@ -8888,6 +9419,15 @@ the makefiles. This option enables messages while rebuilding makefiles, too. Note that the @samp{all} option does enable this option. This option also enables @samp{basic} messages. +@item p (@i{print}) +Prints the recipe to be executed, even when the recipe is normally +silent (due to @code{.SILENT} or @samp{@@}). Also prints the makefile +name and line number where the recipe was defined. + +@item w (@i{why}) +Explains why each target must be remade by showing which prerequisites +are more up to date than the target. + @item n (@i{none}) Disable all debugging currently enabled. If additional debugging flags are encountered after this they will still take effect. @@ -8943,7 +9483,11 @@ Ignore all errors in recipes executed to remake files. Specifies a directory @var{dir} to search for included makefiles. @xref{Include, ,Including Other Makefiles}. If several @samp{-I} options are used to specify several directories, the directories are -searched in the order specified. +searched in the order specified. If the directory @var{dir} is a +single dash (@code{-}) then any already-specified directories up to +that point (including the default directory paths) will be discarded. +You can examine the current list of directories to be searched via the +@code{.INCLUDE_DIRS} variable. @item -j [@var{jobs}] @cindex @code{-j} @@ -8955,6 +9499,15 @@ If there is more than one @samp{-j} option, the last one is effective. @xref{Parallel, ,Parallel Execution}, for more information on how recipes are run. Note that this option is ignored on MS-DOS. +@item --jobserver-style=[@var{style}] +@cindex @code{--jobserver-style} +Chooses the style of jobserver to use. This option only has effect if +parallel builds are enabled (@pxref{Parallel, ,Parallel Execution}). On POSIX +systems @var{style} can be one of @code{fifo} (the default) or @code{pipe}. +On Windows the only acceptable @var{style} is @code{sem} (the default). This +option is useful if you need to use an older versions of GNU @code{make}, or a +different tool that requires a specific jobserver style. + @item -k @cindex @code{-k} @itemx --keep-going @@ -9009,7 +9562,7 @@ Do not remake the file @var{file} even if it is older than its prerequisites, and do not remake anything on account of changes in @var{file}. Essentially the file is treated as very old and its rules are ignored. @xref{Avoiding Compilation, ,Avoiding Recompilation of -Some Files}.@refill +Some Files}. @item -O[@var{type}] @cindex @code{-O} @@ -9021,7 +9574,7 @@ Ensure that the complete output from each recipe is printed in one uninterrupted sequence. This option is only useful when using the @code{--jobs} option to run multiple recipes simultaneously (@pxref{Parallel, ,Parallel Execution}) Without this option output -will be displayed as it is generated by the recipes.@refill +will be displayed as it is generated by the recipes. With no type or the type @samp{target}, output from the entire recipe of each target is grouped together. With the type @samp{line}, output @@ -9054,7 +9607,7 @@ in complex environments. return an exit status that is zero if the specified targets are already up to date, one if any remaking is required, or two if an error is encountered. @xref{Instead of Execution, ,Instead of Executing -Recipes}.@refill +Recipes}. @item -r @cindex @code{-r} @@ -9104,7 +9657,48 @@ Cancel the effect of the @samp{-k} option. This is never necessary except in a recursive @code{make} where @samp{-k} might be inherited from the top-level @code{make} via @code{MAKEFLAGS} (@pxref{Recursion, ,Recursive Use of @code{make}}) -or if you set @samp{-k} in @code{MAKEFLAGS} in your environment.@refill +or if you set @samp{-k} in @code{MAKEFLAGS} in your environment. + +@item --shuffle[=@var{mode}] +@cindex @code{--shuffle} +@c Extra blank line here makes the table look better. + +This option enables a form of fuzz-testing of prerequisite relationships. +When parallelism is enabled (@samp{-j}) the order in which targets are +built becomes less deterministic. If prerequisites are not fully declared +in the makefile this can lead to intermittent and hard-to-track-down build +failures. + +The @samp{--shuffle} option forces @code{make} to purposefully reorder goals +and prerequisites so target/prerequisite relationships still hold, but +ordering of prerequisites of a given target are reordered as described below. + +The order in which prerequisites are listed in automatic variables is not +changed by this option. + +The @code{.NOTPARALLEL} pseudo-target disables shuffling for that makefile. +Also any prerequisite list which contains @code{.WAIT} will not be shuffled. +@xref{Parallel Disable, ,Disabling Parallel Execution}. + +The @samp{--shuffle=} option accepts these values: + +@table @code +@item random +Choose a random seed for the shuffle. This is the default if no mode is +specified. The chosen seed is also provided to sub-@code{make} commands. The +seed is included in error messages so that it can be re-used in future runs to +reproduce the problem or verify that it has been resolved. + +@item reverse +Reverse the order of goals and prerequisites, rather than a random shuffle. + +@item @var{seed} +Use @samp{random} shuffle initialized with the specified seed value. The +@var{seed} is an integer. + +@item none +Disable shuffling. This negates any previous @samp{--shuffle} options. +@end table @item -t @cindex @code{-t} @@ -9119,11 +9713,8 @@ recipes were done, in order to fool future invocations of @item --trace @cindex @code{--trace} -Show tracing information for @code{make} execution. Prints the entire -recipe to be executed, even for recipes that are normally silent (due -to @code{.SILENT} or @samp{@@}). Also prints the makefile name and -line number where the recipe was defined, and information on why the -target is being rebuilt. +Show tracing information for @code{make} execution. Using @code{--trace} is +shorthand for @code{--debug=print,why}. @item -v @cindex @code{-v} @@ -9190,7 +9781,7 @@ them. For example, there is an implicit rule for C compilation. File names determine which implicit rules are run. For example, C compilation typically takes a @file{.c} file and makes a @file{.o} file. So @code{make} applies the implicit rule for C compilation when it sees -this combination of file name endings.@refill +this combination of file name endings. A chain of implicit rules can apply in sequence; for example, @code{make} will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file. @@ -9354,7 +9945,7 @@ for full details on suffix rules. @pindex .o @pindex .c @file{@var{n}.o} is made automatically from @file{@var{n}.c} with -a recipe of the form @samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}.@refill +a recipe of the form @w{@samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}}. @item Compiling C++ programs @cindex C++, rule to compile @@ -9364,15 +9955,16 @@ a recipe of the form @samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}.@refill @pindex .C @file{@var{n}.o} is made automatically from @file{@var{n}.cc}, @file{@var{n}.cpp}, or @file{@var{n}.C} with a recipe of the form -@samp{$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c}. We encourage you to use the -suffix @samp{.cc} for C++ source files instead of @samp{.C}.@refill +@w{@samp{$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c}}. We encourage you to use the +suffix @samp{.cc} or @samp{.cpp} for C++ source files instead of @samp{.C} to +better support case-insensitive file systems. @item Compiling Pascal programs @cindex Pascal, rule to compile @pindex pc @pindex .p @file{@var{n}.o} is made automatically from @file{@var{n}.p} -with the recipe @samp{$(PC) $(PFLAGS) -c}.@refill +with the recipe @samp{$(PC) $(PFLAGS) -c}. @item Compiling Fortran and Ratfor programs @cindex Fortran, rule to compile @@ -9383,7 +9975,7 @@ with the recipe @samp{$(PC) $(PFLAGS) -c}.@refill @pindex .F @file{@var{n}.o} is made automatically from @file{@var{n}.r}, @file{@var{n}.F} or @file{@var{n}.f} by running the -Fortran compiler. The precise recipe used is as follows:@refill +Fortran compiler. The precise recipe used is as follows: @table @samp @item .f @@ -9398,7 +9990,7 @@ Fortran compiler. The precise recipe used is as follows:@refill @file{@var{n}.f} is made automatically from @file{@var{n}.r} or @file{@var{n}.F}. This rule runs just the preprocessor to convert a Ratfor or preprocessable Fortran program into a strict Fortran -program. The precise recipe used is as follows:@refill +program. The precise recipe used is as follows: @table @samp @item .F @@ -9413,10 +10005,9 @@ program. The precise recipe used is as follows:@refill @pindex .sym @pindex .def @pindex .mod -@file{@var{n}.sym} is made from @file{@var{n}.def} with a recipe -of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}. @file{@var{n}.o} -is made from @file{@var{n}.mod}; the form is: -@w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}.@refill +@file{@var{n}.sym} is made from @file{@var{n}.def} with a recipe of the form +@w{@samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}}. @file{@var{n}.o} is made from +@file{@var{n}.mod}; the form is: @w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}. @need 1200 @item Assembling and preprocessing assembler programs @@ -9425,7 +10016,7 @@ is made from @file{@var{n}.mod}; the form is: @pindex .s @file{@var{n}.o} is made automatically from @file{@var{n}.s} by running the assembler, @code{as}. The precise recipe is -@samp{$(AS) $(ASFLAGS)}.@refill +@samp{$(AS) $(ASFLAGS)}. @pindex .S @file{@var{n}.s} is made automatically from @file{@var{n}.S} by @@ -9436,9 +10027,9 @@ running the C preprocessor, @code{cpp}. The precise recipe is @cindex linking, predefined rule for @pindex ld @pindex .o -@file{@var{n}} is made automatically from @file{@var{n}.o} by running -the linker (usually called @code{ld}) via the C compiler. The precise -recipe used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}. +@file{@var{n}} is made automatically from @file{@var{n}.o} by running the C +compiler to link the program. The precise recipe used is @w{@samp{$(CC) +$(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}. This rule does the right thing for a simple program with only one source file. It will also do the right thing if there are multiple @@ -9475,7 +10066,7 @@ be automatically linked by using the compiler (@samp{$(CC)}, assemble @samp{.s} files) without the @samp{-c} option. This could be done by using the @samp{.o} object files as intermediates, but it is faster to do the compiling and linking in one step, so that's how it's -done.@refill +done. @item Yacc for C programs @pindex yacc @@ -9504,7 +10095,7 @@ guess which compiler to use. It will guess the C compiler, because that is more common. If you are using Ratfor, make sure @code{make} knows this by mentioning @file{@var{n}.r} in the makefile. Or, if you are using Ratfor exclusively, with no C files, remove @samp{.c} from -the list of implicit rule suffixes with:@refill +the list of implicit rule suffixes with: @example @group @@ -9520,7 +10111,7 @@ the list of implicit rule suffixes with:@refill @file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}. The precise recipe is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}. The same recipe is used on the C code produced from -@file{@var{n}.y} or @file{@var{n}.l}.@refill +@file{@var{n}.y} or @file{@var{n}.l}. @item @TeX{} and Web @cindex @TeX{}, rule to run @@ -9541,7 +10132,7 @@ The same recipe is used on the C code produced from it exists or can be made) with @samp{$(CWEAVE)}. @file{@var{n}.p} is made from @file{@var{n}.web} with @samp{$(TANGLE)} and @file{@var{n}.c} is made from @file{@var{n}.w} (and from @file{@var{n}.ch} if it exists -or can be made) with @samp{$(CTANGLE)}.@refill +or can be made) with @samp{$(CTANGLE)}. @item Texinfo and Info @cindex Texinfo, rule to format @@ -9569,7 +10160,7 @@ extracted from RCS if it already exists, even if the RCS file is newer. The rules for RCS are terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}), so RCS files cannot be generated from another source; they must -actually exist.@refill +actually exist. @item SCCS @cindex SCCS, rule to extract from @@ -9580,14 +10171,14 @@ named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}. The precise recipe used is @w{@samp{$(GET) $(GFLAGS)}}. The rules for SCCS are terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}), so SCCS files cannot be generated from another source; they must -actually exist.@refill +actually exist. @pindex .sh For the benefit of SCCS, a file @file{@var{n}} is copied from @file{@var{n}.sh} and made executable (by everyone). This is for shell scripts that are checked into SCCS. Since RCS preserves the execution permission of a file, you do not need to use this feature -with RCS.@refill +with RCS. We recommend that you avoid using of SCCS. RCS is widely held to be superior, and is also free. By choosing free software in place of @@ -9640,7 +10231,7 @@ used for all C compilations performed by the implicit rule. By redefining @samp{CFLAGS} to be @samp{-g}, you could pass the @samp{-g} option to each compilation. @emph{All} implicit rules that do C compilation use @samp{$(CC)} to get the program name for the compiler and @emph{all} -include @samp{$(CFLAGS)} among the arguments given to the compiler.@refill +include @samp{$(CFLAGS)} among the arguments given to the compiler. The variables used in implicit rules fall into two classes: those that are names of programs (like @code{CC}) and those that contain arguments for the @@ -9857,7 +10448,7 @@ special searching is required: @code{make} finds that the object file can be made by C compilation from @file{@var{n}.c}; later on, when considering how to make @file{@var{n}.c}, the rule for running Yacc is used. Ultimately both @file{@var{n}.c} and @file{@var{n}.o} are -updated.@refill +updated. @cindex intermediate files @cindex files, intermediate @@ -9867,7 +10458,7 @@ However, even if @file{@var{n}.c} does not exist and is not mentioned, called an @dfn{intermediate file}. Once @code{make} has decided to use the intermediate file, it is entered in the data base as if it had been mentioned in the makefile, along with the implicit rule that says how to -create it.@refill +create it. Intermediate files are remade using their rules just like all other files. But intermediate files are treated differently in two ways. @@ -9875,46 +10466,55 @@ files. But intermediate files are treated differently in two ways. The first difference is what happens if the intermediate file does not exist. If an ordinary file @var{b} does not exist, and @code{make} considers a target that depends on @var{b}, it invariably creates -@var{b} and then updates the target from @var{b}. But if @var{b} is an -intermediate file, then @code{make} can leave well enough alone. It -won't bother updating @var{b}, or the ultimate target, unless some -prerequisite of @var{b} is newer than that target or there is some other -reason to update that target. - -The second difference is that if @code{make} @emph{does} create @var{b} -in order to update something else, it deletes @var{b} later on after it -is no longer needed. Therefore, an intermediate file which did not -exist before @code{make} also does not exist after @code{make}. -@code{make} reports the deletion to you by printing a @samp{rm -f} -command showing which file it is deleting. - -Ordinarily, a file cannot be intermediate if it is mentioned in the -makefile as a target or prerequisite. However, you can explicitly mark a -file as intermediate by listing it as a prerequisite of the special target -@code{.INTERMEDIATE}. This takes effect even if the file is mentioned -explicitly in some other way. +@var{b} and then updates the target from @var{b}. But if @var{b} is +an intermediate file, then @code{make} can leave well enough alone: +it won't create @var{b} unless one of its prerequisites is out of +date. This means the target depending on @var{b} won't be rebuilt +either, unless there is some other reason to update that target: for +example the target doesn't exist or a different prerequisite is newer +than the target. + +The second difference is that if @code{make} @emph{does} create @var{b} in +order to update something else, it deletes @var{b} later on after it is no +longer needed. Therefore, an intermediate file which did not exist before +@code{make} also does not exist after @code{make}. @code{make} reports the +deletion to you by printing a @samp{rm} command showing which file it is +deleting. + +You can explicitly mark a file as intermediate by listing it as a prerequisite +of the special target @code{.INTERMEDIATE}. This takes effect even if the +file is mentioned explicitly in some other way. + +A file cannot be intermediate if it is mentioned in the makefile as a target +or prerequisite, so one way to avoid the deletion of intermediate files is by +adding it as a prerequisite to some target. However, doing so can cause make +to do extra work when searching pattern rules (@pxref{Implicit Rule Search, +,Implicit Rule Search Algorithm}). + +As an alternative, listing a file as a prerequisite of the special target +@code{.NOTINTERMEDIATE} forces it to not be considered intermediate (just as +any other mention of the file will do). Also, listing the target pattern of a +pattern rule as a prerequisite of @code{.NOTINTERMEDIATE} ensures that no +targets generated using that pattern rule are considered intermediate. + +You can disable intermediate files completely in your makefile by +providing @code{.NOTINTERMEDIATE} as a target with no prerequisites: +in that case it applies to every file in the makefile. @cindex intermediate files, preserving @cindex preserving intermediate files @cindex secondary files -You can prevent automatic deletion of an intermediate file by marking it -as a @dfn{secondary} file. To do this, list it as a prerequisite of the -special target @code{.SECONDARY}. When a file is secondary, @code{make} -will not create the file merely because it does not already exist, but -@code{make} does not automatically delete the file. Marking a file as -secondary also marks it as intermediate. - -You can list the target pattern of an implicit rule (such as @samp{%.o}) -as a prerequisite of the special target @code{.PRECIOUS} to preserve -intermediate files made by implicit rules whose target patterns match -that file's name; see @ref{Interrupts}.@refill -@cindex preserving with @code{.PRECIOUS} -@cindex @code{.PRECIOUS} intermediate files +If you do not want @code{make} to create a file merely because it does +not already exist, but you also do not want @code{make} to +automatically delete the file, you can mark it as a @dfn{secondary} +file. To do this, list it as a prerequisite of the special target +@code{.SECONDARY}. Marking a file as secondary also marks it as +intermediate. A chain can involve more than two implicit rules. For example, it is possible to make a file @file{foo} from @file{RCS/foo.y,v} by running RCS, Yacc and @code{cc}. Then both @file{foo.y} and @file{foo.c} are -intermediate files that are deleted at the end.@refill +intermediate files that are deleted at the end. No single implicit rule can appear more than once in a chain. This means that @code{make} will not even consider such a ridiculous thing as making @@ -9946,7 +10546,7 @@ substring, while other characters match only themselves. The prerequisites likewise use @samp{%} to show how their names relate to the target name. Thus, a pattern rule @samp{%.o : %.c} says how to make any file -@file{@var{stem}.o} from another file @file{@var{stem}.c}.@refill +@file{@var{stem}.o} from another file @file{@var{stem}.c}. Note that expansion using @samp{%} in pattern rules occurs @strong{after} any variable or function expansions, which take place @@ -9981,7 +10581,7 @@ For example, @samp{%.c} as a pattern matches any file name that ends in @samp{.c}. @samp{s.%.c} as a pattern matches any file name that starts with @samp{s.}, ends in @samp{.c} and is at least five characters long. (There must be at least one character to match the @samp{%}.) The substring -that the @samp{%} matches is called the @dfn{stem}.@refill +that the @samp{%} matches is called the @dfn{stem}. @samp{%} in a prerequisite of a pattern rule stands for the same stem that was matched by the @samp{%} in the target. In order for the @@ -10017,18 +10617,27 @@ More than one pattern rule may match a target. In this case @cindex multiple targets, in pattern rule @cindex target, multiple in pattern rule -Pattern rules may have more than one target; however, every target -must contain a @code{%} character. Pattern rules are always treated -as grouped targets (@pxref{Multiple Targets, , Multiple Targets in a -Rule}) regardless of whether they use the @code{:} or @code{&:} +Pattern rules may have more than one target; however, every target must +contain a @code{%} character. Multiple target patterns in pattern rules are +always treated as grouped targets (@pxref{Multiple Targets, , Multiple Targets +in a Rule}) regardless of whether they use the @code{:} or @code{&:} separator. +There is one exception: if a pattern target is out of date or does +not exist and the makefile does not need to build it, then it will not cause +the other targets to be considered out of date. Note that this historical +exception will be removed in future versions of GNU @code{make} and should not +be relied on. If this situation is detected @code{make} will generate a +warning @emph{pattern recipe did not update peer target}; however, @code{make} +cannot detect all such situations. Please be sure that your recipe updates +@emph{all} the target patterns when it runs. + @node Pattern Examples, Automatic Variables, Pattern Intro, Pattern Rules @subsection Pattern Rule Examples Here are some examples of pattern rules actually predefined in @code{make}. First, the rule that compiles @samp{.c} files into @samp{.o} -files:@refill +files: @example %.o : %.c @@ -10039,7 +10648,7 @@ files:@refill defines a rule that can make any file @file{@var{x}.o} from @file{@var{x}.c}. The recipe uses the automatic variables @samp{$@@} and @samp{$<} to substitute the names of the target file and the source file -in each case where the rule applies (@pxref{Automatic Variables}).@refill +in each case where the rule applies (@pxref{Automatic Variables}). Here is a second built-in rule: @@ -10054,7 +10663,7 @@ corresponding file @file{@var{x},v} in the sub-directory @file{RCS}. Since the target is @samp{%}, this rule will apply to any file whatever, provided the appropriate prerequisite file exists. The double colon makes the rule @dfn{terminal}, which means that its prerequisite may not be an intermediate -file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}).@refill +file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}). @need 500 This pattern rule has two targets: @@ -10078,7 +10687,7 @@ will be executed only once, and the prerequisites of both the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c} and the file @file{scan.o} from @file{scan.c}, while @file{foo} is linked from @file{parse.tab.o}, @file{scan.o}, and its other -prerequisites, and it will execute happily ever after.)@refill +prerequisites, and it will execute happily ever after.) @node Automatic Variables, Pattern Match, Pattern Examples, Pattern Rules @subsection Automatic Variables @@ -10144,6 +10753,18 @@ The names of all the prerequisites that are newer than the target, with spaces between them. If the target does not exist, all prerequisites will be included. For prerequisites which are archive members, only the named member is used (@pxref{Archives}). + +@samp{$?} is useful even in explicit rules when you wish to operate on only +the prerequisites that have changed. For example, suppose that an archive +named @file{lib} is supposed to contain copies of several object files. +This rule copies just the changed object files into the archive: + +@example +@group +lib: foo.o bar.o lose.o win.o + ar r lib $? +@end group +@end example @cindex prerequisites, list of changed @cindex list of changed prerequisites @@ -10181,7 +10802,7 @@ them. The stem with which an implicit rule matches (@pxref{Pattern Match, ,How Patterns Match}). If the target is @file{dir/a.foo.b} and the target pattern is @file{a.%.b} then the stem is @file{dir/foo}. The stem is -useful for constructing names of related files.@refill +useful for constructing names of related files. @cindex stem, variable for In a static pattern rule, the stem is part of the file name that matched @@ -10194,24 +10815,12 @@ the target name minus the suffix. For example, if the target name is @samp{foo.c}, then @samp{$*} is set to @samp{foo}, since @samp{.c} is a suffix. GNU @code{make} does this bizarre thing only for compatibility with other implementations of @code{make}. You should generally avoid -using @samp{$*} except in implicit rules or static pattern rules.@refill +using @samp{$*} except in implicit rules or static pattern rules. If the target name in an explicit rule does not end with a recognized suffix, @samp{$*} is set to the empty string for that rule. @end table -@samp{$?} is useful even in explicit rules when you wish to operate on only -the prerequisites that have changed. For example, suppose that an archive -named @file{lib} is supposed to contain copies of several object files. -This rule copies just the changed object files into the archive: - -@example -@group -lib: foo.o bar.o lose.o win.o - ar r lib $? -@end group -@end example - Of the variables listed above, four have values that are single file names, and three have values that are lists of file names. These seven have variants that get just the file's directory name or just @@ -10319,7 +10928,7 @@ overlap. The text between the prefix and the suffix is called the @file{test.o}, the stem is @samp{test}. The pattern rule prerequisites are turned into actual file names by substituting the stem for the character @samp{%}. Thus, if in the same example one of the prerequisites is written -as @samp{%.c}, it expands to @samp{test.c}.@refill +as @samp{%.c}, it expands to @samp{test.c}. When the target pattern does not contain a slash (and it usually does not), directory names in the file names are removed from the file name @@ -10334,7 +10943,7 @@ with @samp{src/a} as the stem. When prerequisites are turned into file names, the directories from the stem are added at the front, while the rest of the stem is substituted for the @samp{%}. The stem @samp{src/a} with a prerequisite pattern @samp{c%r} gives the file name -@file{src/car}.@refill +@file{src/car}. @cindex pattern rules, order of @cindex order of pattern rules @@ -10342,9 +10951,11 @@ A pattern rule can be used to build a given file only if there is a target pattern that matches the file name, @emph{and} all prerequisites in that rule either exist or can be built. The rules you write take precedence over those that are built in. Note however, -that a rule whose prerequisites actually exist or are mentioned always -takes priority over a rule with prerequisites that must be made by -chaining other implicit rules. +that a rule which can be satisfied without chaining other implicit +rules (for example, one which has no prerequisites or its +prerequisites already exist or are mentioned) always takes priority +over a rule with prerequisites that must be made by chaining other +implicit rules. @cindex stem, shortest It is possible that more than one pattern rule will meet these @@ -10402,7 +11013,7 @@ file, not an executable. If @code{make} did consider these possibilities, it would ultimately reject them, because files such as @file{foo.c.o} and @file{foo.c.p} would not exist. But these possibilities are so numerous that @code{make} would run very slowly if it had to consider -them.@refill +them. To gain speed, we have put various constraints on the way @code{make} considers match-anything rules. There are two different constraints that @@ -10421,7 +11032,7 @@ not exist, @code{make} will not even consider trying to make it as an intermediate file from @file{foo.c,v.o} or from @file{RCS/SCCS/s.foo.c,v}. RCS and SCCS files are generally ultimate source files, which should not be remade from any other files; therefore, @code{make} can save time by not -looking for ways to remake them.@refill +looking for ways to remake them. If you do not mark the match-anything rule as terminal, then it is non-terminal. A non-terminal match-anything rule cannot apply to a @@ -10436,7 +11047,7 @@ rule is actually applicable (which happens only if there is a file consideration of any non-terminal match-anything rules for the file @file{foo.c}. Thus, @code{make} will not even consider trying to make @file{foo.c} as an executable file from @file{foo.c.o}, @file{foo.c.c}, -@file{foo.c.p}, etc.@refill +@file{foo.c.p}, etc. The motivation for this constraint is that non-terminal match-anything rules are used for making files containing specific types of data (such as @@ -10523,7 +11134,7 @@ the recipe previously stored for @code{.DEFAULT} is cleared. Then If you do not want a target to get the recipe from a match-anything pattern rule or @code{.DEFAULT}, but you also do not want any recipe to be run for the target, you can give it an empty recipe -(@pxref{Empty Recipes, ,Defining Empty Recipes}).@refill +(@pxref{Empty Recipes, ,Defining Empty Recipes}). You can use a last-resort rule to override part of another makefile. @xref{Overriding Makefiles, , Overriding Part of Another Makefile}. @@ -10537,7 +11148,7 @@ You can use a last-resort rule to override part of another makefile. @code{make}. Suffix rules are obsolete because pattern rules are more general and clearer. They are supported in GNU @code{make} for compatibility with old makefiles. They come in two kinds: -@dfn{double-suffix} and @dfn{single-suffix}.@refill +@dfn{double-suffix} and @dfn{single-suffix}. A double-suffix rule is defined by a pair of suffixes: the target suffix and the source suffix. It matches any file whose name ends @@ -10563,7 +11174,7 @@ For example, @samp{.c} and @samp{.o} are both on the default list of known suffixes. Therefore, if you define a rule whose target is @samp{.c.o}, @code{make} takes it to be a double-suffix rule with source suffix @samp{.c} and target suffix @samp{.o}. Here is the old-fashioned -way to define the rule for compiling a C source file:@refill +way to define the rule for compiling a C source file: @example .c.o: @@ -10595,7 +11206,7 @@ which tells how to make @samp{.o} files from @samp{.c} files, and makes all Suffix rules with no recipe are also meaningless. They do not remove previous rules as do pattern rules with no recipe (@pxref{Canceling Rules, , Canceling Implicit Rules}). They simply enter the suffix or -pair of suffixes concatenated as a target in the data base.@refill +pair of suffixes concatenated as a target in the data base. @findex .SUFFIXES The known suffixes are simply the names of the prerequisites of the special @@ -10650,13 +11261,13 @@ For an archive member target of the form @samp{@var{archive}(@var{member})}, the following algorithm is run twice, first using the entire target name @var{t}, and second using @samp{(@var{member})} as the target @var{t} if the first run found no -rule.@refill +rule. @enumerate @item Split @var{t} into a directory part, called @var{d}, and the rest, called @var{n}. For example, if @var{t} is @samp{src/foo.o}, then -@var{d} is @samp{src/} and @var{n} is @samp{foo.o}.@refill +@var{d} is @samp{src/} and @var{n} is @samp{foo.o}. @item Make a list of all the pattern rules one of whose targets matches @@ -10677,17 +11288,17 @@ For each pattern rule in the list: @enumerate a @item Find the stem @var{s}, which is the nonempty part of @var{t} or @var{n} -matched by the @samp{%} in the target pattern.@refill +matched by the @samp{%} in the target pattern. @item Compute the prerequisite names by substituting @var{s} for @samp{%}; if the target pattern does not contain a slash, append @var{d} to -the front of each prerequisite name.@refill +the front of each prerequisite name. @item Test whether all the prerequisites exist or ought to exist. (If a file name is mentioned in the makefile as a target or as an explicit -prerequisite, then we say it ought to exist.) +prerequisite of target T, then we say it ought to exist.) If all prerequisites exist or ought to exist, or there are no prerequisites, then this rule applies. @@ -10718,6 +11329,13 @@ made by implicit rules, then this rule applies. @end enumerate @item +If no pattern rule has been found then try step 5 and step 6 again with a +modified definition of ``ought to exist'': if a filename is mentioned as a +target or as an explicit prerequisite of @emph{any} target, then it ought to +exist. This check is only present for backward-compatibility with older +versions of GNU make: we don't recommend relying on it. + +@item If no implicit rule applies, the rule for @code{.DEFAULT}, if any, applies. In that case, give @var{t} the same recipe that @code{.DEFAULT} has. Otherwise, there is no recipe for @var{t}. @@ -10960,7 +11578,7 @@ Since you might want to use @samp{.a} as the suffix for some other kind of file, @code{make} also converts archive suffix rules to pattern rules in the normal way (@pxref{Suffix Rules}). Thus a double-suffix rule @w{@samp{.@var{x}.a}} produces two pattern rules: @samp{@w{(%.o):} -@w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}.@refill +@w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}. @node Extending make, Integrating make, Archives, Top @chapter Extending GNU @code{make} @@ -11324,7 +11942,7 @@ Loaded objects undergo the same re-make procedure as makefiles loaded object is recreated, then @code{make} will start from scratch and re-read all the makefiles, and reload the object files again. It is not necessary for the loaded object to do anything special to -support this.@refill +support this. It's up to the makefile author to provide the rules needed for rebuilding the loaded object. @@ -11421,7 +12039,7 @@ arguments. @item max_args The maximum number of arguments the function will accept. Must be between 0 and 255. GNU @code{make} will check this and fail before -invoking @code{func_ptr} if the function was invoked with too few +invoking @code{func_ptr} if the function was invoked with too many arguments. If the value is 0, then any number of arguments is accepted. If the value is greater than 0, then it must be greater than or equal to @code{min_args}. @@ -11499,12 +12117,13 @@ needed) using @code{gmk_free}. @findex gmk_alloc Return a pointer to a newly-allocated buffer. This function will always return a valid pointer; if not enough memory is available -@code{make} will exit. +@code{make} will exit. @code{gmk_alloc} does not initialize allocated memory. @item gmk_free @findex gmk_free Free a buffer returned to you by @code{make}. Once the @code{gmk_free} function returns the string will no longer be valid. +If NULL is passed to @code{gmk_free}, no operation is performed. @end table @node Loaded Object Example, , Loaded Object API, Loading Objects @@ -11520,7 +12139,6 @@ function in a file @file{mk_temp.c}: @example @group #include -#include #include #include #include @@ -11557,8 +12175,9 @@ gen_tmpfile(const char *nm, int argc, char **argv) @} int -mk_temp_gmk_setup () +mk_temp_gmk_setup (const gmk_floc *floc) @{ + printf ("mk_temp plugin loaded from %s:%lu\n", floc->filenm, floc->lineno); /* Register the function with make name "mk-temp". */ gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1); return 1; @@ -11566,7 +12185,7 @@ mk_temp_gmk_setup () @end group @end example -Next, we will write a makefile that can build this shared object, load +Next, we will write a @file{Makefile} that can build this shared object, load it, and use it: @example @@ -11577,7 +12196,7 @@ all: load mk_temp.so mk_temp.so: mk_temp.c - $(CC) -shared -fPIC -o $@ $< + $(CC) -shared -fPIC -o $@@ $< @end group @end example @@ -11591,7 +12210,7 @@ object will look on Windows like this (assuming the API version is 1): @example @group mk_temp.dll: mk_temp.c - $(CC) -shared -o $@ $< -lgnumake-1 + $(CC) -shared -o $@@ $< -lgnumake-1 @end group @end example @@ -11599,6 +12218,7 @@ Now when you run @code{make} you'll see something like: @example $ make +mk_temp plugin loaded from Makefile:4 cc -shared -fPIC -o mk_temp.so mk_temp.c Temporary filename: tmpfile.A7JEwd @end example @@ -11635,7 +12255,7 @@ to run multiple operations in parallel, either using multiple threads or multiple processes, can be enhanced to participate in GNU @code{make}'s job management facility to ensure that the total number of active threads/processes running on the system does not exceed the -maximum number of slots provided to GNU @code{make}. @refill +maximum number of slots provided to GNU @code{make}. @cindex jobserver GNU @code{make} uses a method called the ``jobserver'' to control the @@ -11643,20 +12263,20 @@ number of active jobs across recursive invocations. The actual implementation of the jobserver varies across different operating systems, but some fundamental aspects are always true. -First, only command lines that @code{make} understands to be recursive -invocations of @code{make} (@pxref{MAKE Variable, ,How the @code{MAKE} -Variable Works}) will have access to the jobserver. When writing -makefiles you must be sure to mark the command as recursive (most -commonly by prefixing the command line with the @code{+} indicator -(@pxref{Recursion, ,Recursive Use of @code{make}}). +@cindex @code{--jobserver-auth} +First, @code{make} will provide information necessary for accessing the +jobserver through the environment to its children, in the @code{MAKEFLAGS} +environment variable. Tools which want to participate in the jobserver +protocol will need to parse this environment variable and find the word +starting with @code{--jobserver-auth=}. The value of this option will +describe how to communicate with the jobserver. The interpretation of this +value is described in the sections below. -Second, @code{make} will provide information necessary for accessing -the jobserver through the environment to its children, in the -@code{MAKEFLAGS} environment variable. Tools which want to -participate in the jobserver protocol will need to parse this -environment variable, as described in subsequent sections. +Be aware that the @code{MAKEFLAGS} variable may contain multiple instances of +the @code{--jobserver-auth=} option. Only the @emph{last} instance is +relevant. -Third, every command @code{make} starts has one implicit job slot +Second, every command @code{make} starts has one implicit job slot reserved for it before it starts. Any tool which wants to participate in the jobserver protocol should assume it can always run one job without having to contact the jobserver at all. @@ -11693,54 +12313,75 @@ the jobserver. @subsection POSIX Jobserver Interaction @cindex jobserver on POSIX -On POSIX systems the jobserver is implemented as a simple UNIX pipe. -The pipe will be pre-loaded with one single-character token for each -available job. To obtain an extra slot you must read a single -character from the jobserver pipe; to release a slot you must write a -single character back into the jobserver pipe. Note that the read -side of the jobserver pipe is set to ``blocking'' mode. - -To access the pipe you must parse the @code{MAKEFLAGS} variable and -look for the argument string @code{--jobserver-auth=R,W} where -@samp{R} and @samp{W} are non-negative integers representing file -descriptors: @samp{R} is the read file descriptor and @samp{W} is the -write file descriptor. - -It's important that when you release the job slot, you write back the -same character you read from the pipe for that slot. Don't assume -that all tokens are the same character; different characters may have -different meanings to GNU @code{make}. The order is not important, -since @code{make} has no idea in what order jobs will complete anyway. +On POSIX systems the jobserver is implemented in one of two ways: on systems +that support it, GNU @code{make} will create a named pipe and use that for the +jobserver. In this case the auth option will have the form +@code{--jobserver-auth=fifo:PATH} where @samp{PATH} is the pathname of the +named pipe. To access the jobserver you should open the named pipe path and +read/write to it as described below. + +@cindex @code{--jobserver-style} +If the system doesn't support named pipes, or if the user provided the +@code{--jobserver-style} option and specified @samp{pipe}, then the jobserver +will be implemented as a simple UNIX pipe. In this case the auth option will +have the form @code{--jobserver-auth=R,W} where @samp{R} and @samp{W} are +non-negative integers representing file descriptors: @samp{R} is the read file +descriptor and @samp{W} is the write file descriptor. If either or both of +these file descriptors are negative, it means the jobserver is disabled for +this process. + +When using a simple pipe, only command lines that @code{make} understands to +be recursive invocations of @code{make} (@pxref{MAKE Variable, ,How the +@code{MAKE} Variable Works}) will have access to the jobserver. When writing +makefiles you must be sure to mark the command as recursive (most commonly by +prefixing the command line with the @code{+} indicator (@pxref{Recursion, +,Recursive Use of @code{make}}). Note that the read side of the jobserver +pipe is set to ``blocking'' mode. This should not be changed. + +In both implementations of the jobserver, the pipe will be pre-loaded with one +single-character token for each available job. To obtain an extra slot you +must read a single character from the jobserver; to release a slot you must +write a single character back into the jobserver. + +It's important that when you release the job slot, you write back the same +character you read. Don't assume that all tokens are the same character; +different characters may have different meanings to GNU @code{make}. The +order is not important, since @code{make} has no idea in what order jobs will +complete anyway. There are various error conditions you must consider to ensure your implementation is robust: @itemize @bullet @item -Usually you will have a command-line argument controlling the parallel -operation of your tool. Consider whether your tool should detect -situations where both the jobserver and the command-line argument are -specified, and how it should react. +If you have a command-line argument controlling the parallel operation of your +tool, consider whether your tool should detect situations where both the +jobserver and the command-line argument are specified, and how it should +react. @item -If your tool determines that the @code{--jobserver-auth} option is -available in @code{MAKEFLAGS} but that the file descriptors specified -are closed, this means that the calling @code{make} process did not -think that your tool was a recursive @code{make} invocation (e.g., the -command line was not prefixed with a @code{+} character). You should -notify your users of this situation. +If your tool does not recognize the format of the @code{--jobserver-auth} +string, it should assume the jobserver is using a different style and it +cannot connect. @item -Your tool should also examine the first word of the @code{MAKEFLAGS} -variable and look for the character @code{n}. If this character is -present then @code{make} was invoked with the @samp{-n} option and -your tool should stop without performing any operations. +If your tool determines that the @code{--jobserver-auth} option references a +simple pipe but that the file descriptors specified are closed, this means +that the calling @code{make} process did not think that your tool was a +recursive @code{make} invocation (e.g., the command line was not prefixed with +a @code{+} character). You should notify your users of this situation. @item -Your tool should be sure to write back the tokens it read, even under -error conditions. This includes not only errors in your tool but also -outside influences such as interrupts (@code{SIGINT}), etc. You may -want to install signal handlers to manage this write-back. +Your tool should be sure to write back the tokens it read, even under error +conditions. This includes not only errors in your tool but also outside +influences such as interrupts (@code{SIGINT}), etc. You may want to install +signal handlers to manage this write-back. + +@item +Your tool may also examine the first word of the @code{MAKEFLAGS} variable and +look for the character @code{n}. If this character is present then +@code{make} was invoked with the @samp{-n} option and your tool may want to +stop without performing any operations. @end itemize @node Windows Jobserver, , POSIX Jobserver, Job Slots @@ -11757,6 +12398,9 @@ look for the argument string @code{--jobserver-auth=NAME} where @samp{NAME} is the name of the named semaphore. Use this name with @code{OpenSemaphore} to create a handle to the semaphore. +@cindex @code{--jobserver-style} for Windows +The only valid style for @code{--jobserver-style} is @samp{sem}. + There are various error conditions you must consider to ensure your implementation is robust: @@ -11791,7 +12435,7 @@ control characters are not emitted so that they don't corrupt log files, etc. The @code{--output-sync} (@pxref{Parallel Output, ,Output During -Parallel Output}) option will defeat the terminal detection. When +Parallel Execution}) option will defeat the terminal detection. When output synchronization is enabled GNU @code{make} arranges for all command output to be written to a file, so that its output can be written as a block without interference from other commands. This @@ -11842,7 +12486,7 @@ The @code{VPATH} variable and its special meaning. @xref{Directory Search, , Searching Directories for Prerequisites}. This feature exists in System V @code{make}, but is undocumented. It is documented in 4.3 BSD @code{make} (which says it mimics System V's -@code{VPATH} feature).@refill +@code{VPATH} feature). @item Included makefiles. @xref{Include, ,Including Other Makefiles}. @@ -11866,7 +12510,7 @@ in an archive reference. @xref{Automatic Variables}. The automatic variables @code{$@@}, @code{$*}, @code{$<}, @code{$%}, and @code{$?} have corresponding forms like @code{$(@@F)} and @code{$(@@D)}. We have generalized this to @code{$^} as an obvious -extension. @xref{Automatic Variables}.@refill +extension. @xref{Automatic Variables}. @item Substitution variable references. @@ -11904,7 +12548,7 @@ which others. Pattern rules using @samp{%}. This has been implemented in several versions of @code{make}. We're not sure who invented it first, but it's been spread around a bit. -@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}.@refill +@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}. @item Rule chaining and implicit intermediate files. @@ -11943,7 +12587,7 @@ This functionality was provided in GNU @code{make} by the @code{patsubst} function before the alternate syntax was implemented for compatibility with SunOS 4. It is not altogether clear who inspired whom, since GNU @code{make} had @code{patsubst} before SunOS -4 was released.@refill +4 was released. @item The special significance of @samp{+} characters preceding recipe lines @@ -12040,7 +12684,7 @@ Specify extra makefiles to read with an environment variable. @item Strip leading sequences of @samp{./} from file names, so that @file{./@var{file}} and @file{@var{file}} are considered to be the -same file.@refill +same file. @item Use a special search method for library prerequisites written in the @@ -12095,13 +12739,13 @@ Load dynamic objects which can modify the behavior of @code{make}. The @code{make} programs in various other systems support a few features that are not implemented in GNU @code{make}. The POSIX.2 standard (@cite{IEEE Standard 1003.2-1992}) which specifies @code{make} does not -require any of these features.@refill +require any of these features. @itemize @bullet @item A target of the form @samp{@var{file}((@var{entry}))} stands for a member of archive file @var{file}. The member is chosen, not by name, but by -being an object file which defines the linker symbol @var{entry}.@refill +being an object file which defines the linker symbol @var{entry}. This feature was not put into GNU @code{make} because of the non-modularity of putting knowledge into @code{make} of the internal @@ -12128,7 +12772,7 @@ In System V and 4.3 BSD @code{make}, files found by @code{VPATH} search (@pxref{Directory Search, ,Searching Directories for Prerequisites}) have their names changed inside recipes. We feel it is much cleaner to always use automatic variables and thus make this -feature unnecessary.@refill +feature unnecessary. @item In some Unix @code{make}s, the automatic variable @code{$*} appearing in @@ -12142,7 +12786,7 @@ this; it is utterly inconsistent with the normal definition of @code{$*}. In some Unix @code{make}s, implicit rule search (@pxref{Implicit Rules, ,Using Implicit Rules}) is apparently done for @emph{all} targets, not just those without recipes. This means you can -do:@refill +do: @example @group @@ -12153,11 +12797,11 @@ foo.o: @noindent and Unix @code{make} will intuit that @file{foo.o} depends on -@file{foo.c}.@refill +@file{foo.c}. We feel that such usage is broken. The prerequisite properties of @code{make} are well-defined (for GNU @code{make}, at least), -and doing such a thing simply does not fit the model.@refill +and doing such a thing simply does not fit the model. @item GNU @code{make} does not include any built-in implicit rules for @@ -12213,6 +12857,7 @@ Here is a summary of the directives GNU @code{make} recognizes: @itemx define @var{variable} = @itemx define @var{variable} := @itemx define @var{variable} ::= +@itemx define @var{variable} :::= @itemx define @var{variable} += @itemx define @var{variable} ?= @itemx endef @@ -12393,6 +13038,11 @@ Return a string describing the flavor of the @code{make} variable @var{variable}.@* @xref{Flavor Function, , The @code{flavor} Function}. +@item $(let @var{var} [@var{var} ...],@var{words},@var{text}) +Evaluate @var{text} with the @var{var}s bound to the words in +@var{words}.@* +@xref{Let Function, ,The @code{let} Function}. + @item $(foreach @var{var},@var{words},@var{text}) Evaluate @var{text} with @var{var} bound to each word in @var{words}, and concatenate the results.@* @@ -12417,6 +13067,13 @@ all expansions result in a non-empty string, substitute the expansion of the last @var{condition}.@* @xref{Conditional Functions, ,Functions for Conditionals}. +@item $(intcmp @var{lhs},@var{rhs}[,@var{lt-part}[,@var{eq-part}[,@var{gt-part}]]]) +Compare @var{lhs} and @var{rhs} numerically; substitute the expansion of +@var{lt-part}, @var{eq-part}, or @var{gt-part} depending on whether the +left-hand side is less-than, equal-to, or greater-than the right-hand +side, respectively.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + @item $(call @var{var},@var{param},@dots{}) Evaluate the variable @var{var} replacing any references to @code{$(1)}, @code{$(2)} with the first, second, etc.@: @var{param} values.@* @@ -12673,7 +13330,7 @@ command line, and @code{make} couldn't find any makefiles to read in. The latter means that some makefile was found, but it didn't contain any default goal and none was given on the command line. GNU @code{make} has nothing to do in these situations. -@xref{Makefile Arguments, ,Arguments to Specify the Makefile}.@refill +@xref{Makefile Arguments, ,Arguments to Specify the Makefile}. @item Makefile `@var{xxx}' was not found. @itemx Included makefile `@var{xxx}' was not found. @@ -13059,3 +13716,7 @@ tar.zoo: $(SRCS) $(AUX) @printindex fn @bye + +@c Local Variables: +@c eval: (setq fill-column 78) +@c End: diff --git a/doc/stamp-vti b/doc/stamp-vti index df1d34c..c1ea3be 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 19 January 2020 -@set UPDATED-MONTH January 2020 -@set EDITION 4.3 -@set VERSION 4.3 +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/doc/version.texi b/doc/version.texi index df1d34c..c1ea3be 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 19 January 2020 -@set UPDATED-MONTH January 2020 -@set EDITION 4.3 -@set VERSION 4.3 +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/lib/Makefile.am b/lib/Makefile.am index 6e4c1f0..1301aa0 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-2022 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,36 +122,33 @@ libgnu_a_SOURCES += findprog.h findprog-in.c ## end gnulib module findprog-in -## begin gnulib module getdtablesize - +## begin gnulib module gen-header -EXTRA_DIST += getdtablesize.c +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, -EXTRA_libgnu_a_SOURCES += 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 -## end gnulib module getdtablesize +# '$(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' -## begin gnulib module getloadavg +# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that +gl_V_at = $(AM_V_GEN) +## end gnulib module gen-header -EXTRA_DIST += getloadavg.c +## begin gnulib module getloadavg -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 @@ -314,34 +156,6 @@ EXTRA_DIST += 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 += fnmatch.c glob.c -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 - -## 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 @@ -460,11 +214,10 @@ BUILT_SOURCES += $(STDBOOL_H) # 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 $@ + $(gl_V_at)$(SED_HEADER_STDOUT) \ + -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ + $(srcdir)/stdbool.in.h > $@-t + $(AM_V_at)mv $@-t $@ else stdbool.h: $(top_builddir)/config.status rm -f $@ @@ -475,690 +228,6 @@ 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 +236,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..889eb60 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-2022 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,29 @@ 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/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/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -185,18 +171,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 +196,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 +261,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 +296,19 @@ 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@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -342,349 +316,23 @@ 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 +347,6 @@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIMITS_H = @LIMITS_H@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ @@ -709,26 +356,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 +370,16 @@ 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@ @@ -898,8 +405,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 +441,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.h fnmatch.in.h glob.in.h fnmatch.c fnmatch.in.h \ + glob.c glob.in.h warn-on-use.h stdbool.in.h +BUILT_SOURCES = $(ALLOCA_H) $(am__append_3) $(STDBOOL_H) 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) stdbool.h stdbool.h-t MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = @@ -964,35 +460,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 +546,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 +574,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 +756,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 +822,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 +863,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 +915,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 +942,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 +965,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! */'; \ @@ -1546,565 +989,13 @@ fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) # 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_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_STDBOOL_H_TRUE@ -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ +@GL_GENERATE_STDBOOL_H_TRUE@ $(srcdir)/stdbool.in.h > $@-t +@GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_at)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 +1003,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..e2b1461 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-2022 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..f054849 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-2022 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..0348b0d 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-2022 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..ab77ca2 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-2022 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..72a05db 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-2022 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 . */ @@ -26,10 +26,10 @@ #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 +58,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 +73,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 +101,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 +118,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 +131,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 +148,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 +176,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 +219,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 +252,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 +279,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 +300,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 +347,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..e47acc5 100644 --- a/lib/findprog.h +++ b/lib/findprog.h @@ -1,18 +1,18 @@ /* Locating a program in PATH. - Copyright (C) 2001-2003, 2009-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2009-2022 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 @@ -42,6 +42,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 +57,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 +66,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/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..37e8280 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-2022 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, @@ -512,7 +512,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 +550,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 +567,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 +876,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/intprops.h b/lib/intprops.h index dfbcaae..d4a917f 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -1,21 +1,20 @@ /* intprops.h -- properties of integer types - Copyright (C) 2001-2020 Free Software Foundation, Inc. + Copyright (C) 2001-2022 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 @@ -48,7 +47,7 @@ /* 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) @@ -70,7 +69,7 @@ ? _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) + (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) /* Work around OpenVMS incompatibility with C99. */ #if !defined LLONG_MAX && defined __INT64_MAX @@ -86,6 +85,7 @@ /* 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 @@ -94,8 +94,9 @@ #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 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) TYPE_SIGNED (__typeof__ (t)) #else @@ -108,6 +109,8 @@ #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,7 +122,7 @@ + _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) @@ -129,7 +132,8 @@ 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 + and straightforward, but 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 +158,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. */ @@ -222,16 +229,22 @@ /* 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 +#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. */ -#ifdef __clang__ +#if defined __clang_major__ && __clang_major__ < 14 /* Work around Clang bug . */ # define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 #else @@ -239,8 +252,17 @@ #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__) + __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 /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands @@ -323,9 +345,15 @@ 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. @@ -373,8 +401,9 @@ _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__)) +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) # define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) # else /* Work around GCC bug 91450. */ @@ -395,7 +424,7 @@ 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__ +#if __GNUC__ || defined __clang__ # define _GL__GENERIC_BOGUS 1 #else # define _GL__GENERIC_BOGUS 0 @@ -565,7 +594,7 @@ ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ ? (a) < (tmax) / (b) \ : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (b) - 1) \ + ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ : (tmax) / -(b)) \ <= -1 - (a))) \ : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ @@ -581,4 +610,33 @@ : (tmin) / (a) < (b)) \ : (tmax) / (b) < (a))) +/* 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. + + 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. + + 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. */ + +#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 index baacf98..125de5a 100644 --- a/lib/stdbool.in.h +++ b/lib/stdbool.in.h @@ -1,18 +1,18 @@ -/* Copyright (C) 2001-2003, 2006-2020 Free Software Foundation, Inc. +/* Copyright (C) 2001-2003, 2006-2022 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 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 - 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 . */ #ifndef _GL_STDBOOL_H #define _GL_STDBOOL_H @@ -67,8 +67,10 @@ #endif #ifdef __cplusplus -# define _Bool bool -# define bool bool +# if !defined _MSC_VER +# define _Bool bool +# define bool bool +# endif #else # if defined __BEOS__ && !defined __HAIKU__ /* A compiler known to have 'bool'. */ @@ -120,8 +122,17 @@ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; /* The other macros must be usable in preprocessor directives. */ #ifdef __cplusplus -# define false false -# define true true +# if !defined _MSC_VER +# define false false +# define true true +# endif +/* In Sun C++ 5.11 (Solaris Studio 12.2) and older, 'true' as a preprocessor + expression evaluates to 0, not 1. Fix this by overriding 'true'. Note that + the replacement has to be of type 'bool'. */ +# if defined __SUNPRO_CC && true != 1 +# undef true +# define true (!false) +# endif #else # define false 0 # define true 1 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..94f5b92 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-2022 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..dea34e8 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-2022 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..d7131a8 100644 --- a/m4/acinclude.m4 +++ b/m4/acinclude.m4 @@ -1,7 +1,7 @@ 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-2022 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. diff --git a/m4/alloca.m4 b/m4/alloca.m4 index 5922524..dc6f47e 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-2022 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..950aa8d 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-2022 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/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..51deaf0 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-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 @@ -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..6ab3d50 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-2022 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..0b3e4b5 100644 --- a/m4/extensions.m4 +++ b/m4/extensions.m4 @@ -1,14 +1,19 @@ -# serial 18 -*- Autoconf -*- +# serial 22 -*- Autoconf -*- # Enable extensions on systems that normally disable them. -# Copyright (C) 2003, 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2003, 2006-2022 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.70.1], [], [ + # 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 @@ -112,22 +133,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,11 +154,33 @@ 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]) @@ -152,24 +192,18 @@ dnl configure.ac when using autoheader 2.62. 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 +211,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..5a295e2 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-2022 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..2270648 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 +# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2022 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..a761238 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-2022 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..8a5daa2 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 73 +dnl Copyright (C) 2007-2022 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 @@ -29,10 +39,14 @@ AC_DEFUN([gl_COMMON_BODY], [ this syntax with 'extern'. */ # define _Noreturn [[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 +65,377 @@ 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__)) + 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_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 + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) #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 +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + +]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. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) #else -# define _GL_UNUSED_LABEL +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) #endif -/* The __pure__ attribute was added in gcc 2.96. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +/* _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. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#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. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#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__'. */ +#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_PURE /* empty */ +# define _GL_ATTRIBUTE_COLD #endif -/* The __const__ attribute was added in gcc 2.95. */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +/* _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. */ +#if _GL_HAS_ATTRIBUTE (const) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else -# define _GL_ATTRIBUTE_CONST /* empty */ +# define _GL_ATTRIBUTE_CONST +#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. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#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 +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#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. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#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 _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 -/* The __malloc__ attribute was added in gcc 3. */ -#if 3 <= __GNUC__ +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#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. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#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. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#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. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) #else -# define _GL_ATTRIBUTE_MALLOC /* empty */ +# define _GL_ATTRIBUTE_MALLOC +#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. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#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 C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#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. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#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. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#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'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#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. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#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. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#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. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#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. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL #endif ]) AH_VERBATIM([async_safe], @@ -122,6 +465,22 @@ AC_DEFUN([gl_COMMON_BODY], [ 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 dnl familiar with, --enable-cross-guesses=conservative is the appropriate @@ -157,6 +516,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 +538,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 +652,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 +739,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 +768,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 +786,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 +797,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 +820,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 +]) + +# 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]) ]) -# 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_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..27c859d 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-2022 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,31 @@ 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 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]) + AC_REQUIRE([gl_YEAR2038_EARLY]) # 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 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,61 +77,26 @@ 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], @@ -188,50 +117,11 @@ AC_DEFUN([gl_INIT], # 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 + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_STDBOOL_H + gl_CONDITIONAL_HEADER([stdbool.h]) AC_PROG_MKDIR_P - gl_UNISTD_H - gl_XALLOC # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || @@ -244,6 +134,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 +144,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 +174,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 +197,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 +207,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 +295,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.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/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/largefile.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/warn-on-use.m4 - m4/wchar_t.m4 - m4/wint_t.m4 - m4/xalloc.m4 + m4/year2038.m4 + m4/zzgnulib.m4 ]) diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 index 6db2aa2..b922324 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-2022 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..3e8b5e3 --- /dev/null +++ b/m4/largefile.m4 @@ -0,0 +1,180 @@ +# 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-2022 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. +AC_DEFUN([gl_SET_LARGEFILE_SOURCE], +[ + 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 through at least 2.71 on glibc 2.34+ +# with _TIME_BITS. Also, 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 + + +# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, +# CACHE-VAR, +# DESCRIPTION, +# PROLOGUE, [FUNCTION-BODY]) +# -------------------------------------------------------- +m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], +[AC_CACHE_CHECK([for $1 value needed for large files], [$3], +[while :; do + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([$5], [$6])], + [$3=no; break]) + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([#undef $1 +#define $1 $2 +$5], [$6])], + [$3=$2; break]) + $3=unknown + break +done]) +case $$3 in #( + no | unknown) ;; + *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; +esac +rm -rf conftest*[]dnl +])# _AC_SYS_LARGEFILE_MACRO_VALUE + + +# 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. +AC_DEFUN([AC_SYS_LARGEFILE], +[AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +AS_IF([test "$enable_largefile" != no], + [AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + AS_CASE([$ac_cv_sys_file_offset_bits], + [unknown], + [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], + [ac_cv_sys_large_files], + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES])], + [64], + [gl_YEAR2038_BODY([])])]) +])# AC_SYS_LARGEFILE + +# 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..2e8c48d --- /dev/null +++ b/m4/sig_atomic_t.m4 @@ -0,0 +1,14 @@ +# sig_atomic_t.m4 serial 3 +dnl Copyright (C) 2003, 2009-2022 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 index 6bb087e..c67908a 100644 --- a/m4/stdbool.m4 +++ b/m4/stdbool.m4 @@ -1,15 +1,15 @@ # Check for stdbool.h that conforms to C99. -dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2009-2022 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 +#serial 9 # Prepare for substituting if it is not supported. -AC_DEFUN([AM_STDBOOL_H], +AC_DEFUN([gl_STDBOOL_H], [ AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) AC_REQUIRE([AC_CANONICAL_HOST]) @@ -22,20 +22,18 @@ AC_DEFUN([AM_STDBOOL_H], case "$host_os" in solaris*) if test -z "$GCC"; then - STDBOOL_H='stdbool.h' + GL_GENERATE_STDBOOL_H=true else - STDBOOL_H='' + GL_GENERATE_STDBOOL_H=false fi ;; *) - STDBOOL_H='' + GL_GENERATE_STDBOOL_H=false ;; esac else - STDBOOL_H='stdbool.h' + GL_GENERATE_STDBOOL_H=true 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 @@ -45,78 +43,76 @@ AC_DEFUN([AM_STDBOOL_H], 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. +m4_version_prereq([2.72], [], [ AC_DEFUN([AC_CHECK_HEADER_STDBOOL], - [AC_CACHE_CHECK([for stdbool.h that conforms to C99], + [AC_CHECK_TYPES([_Bool]) + AC_CACHE_CHECK([for stdbool.h that conforms to C99 or later], [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 + [[#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" #endif + char b[true == 1 ? 1 : -1]; + char c[true]; - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; - 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]; + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-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 p = true; + bool *pp = &p; ]], [[ - 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); + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); ]])], [ac_cv_header_stdbool_h=yes], [ac_cv_header_stdbool_h=no])]) - AC_CHECK_TYPES([_Bool]) -]) +])# AC_CHECK_HEADER_STDBOOL + +]) # m4_version_prereq 2.72 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..a81731f 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-2022 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/year2038.m4 b/m4/year2038.m4 new file mode 100644 index 0000000..06db589 --- /dev/null +++ b/m4/year2038.m4 @@ -0,0 +1,124 @@ +# year2038.m4 serial 7 +dnl Copyright (C) 2017-2022 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 Attempt to ensure that 'time_t' can go past the year 2038 and that +dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. + +AC_DEFUN([gl_YEAR2038_EARLY], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [For 64-bit time_t on 32-bit mingw.]) + ;; + esac +]) + +# gl_YEAR2038_TEST_INCLUDES +# ------------------------- +AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], +[[ + #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]; +]]) + +# gl_YEAR2038_BODY(REQUIRE-YEAR2038-SAFE) +----------------------------------------- +AC_DEFUN([gl_YEAR2038_BODY], +[ + AC_ARG_ENABLE([year2038], + [ --disable-year2038 omit support for timestamps past the year 2038]) + AS_IF([test "$enable_year2038" != no], + [ + dnl On many systems, time_t is already a 64-bit type. + dnl On those systems where time_t is still 32-bit, it requires kernel + dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, + dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. + dnl + dnl On native Windows, the system include files define types __time32_t + dnl and __time64_t. By default, time_t is an alias of + dnl - __time32_t on 32-bit mingw, + dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). + dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an + dnl alias of __time64_t. + dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of + dnl __time32_t. + AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) + ]) + if test "$gl_cv_type_time_t_y2038" = no; then + AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], + [gl_cv_type_time_t_bits_macro], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + ]gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_bits_macro=yes], + [gl_cv_type_time_t_bits_macro=no]) + ]) + if test "$gl_cv_type_time_t_bits_macro" = yes; then + AC_DEFINE([_TIME_BITS], [64], + [Number of bits in a timestamp, on hosts where this is settable.]) + dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. + AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.]) + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + ]])], + [AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.])], + [# If not cross-compiling and $1 says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + m4_ifval([$1], + [if test $cross_compiling = no \ + && 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'*) + AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038, + and your system appears to support a wider 'time_t'. + Try configuring with 'CC="${CC} -m64"'. + To build with a 32-bit time_t anyway (not recommended), + configure with '--disable-year2038'.]);; + esac + rm -f conftest.time + fi]) + if test "$gl_warned_about_y2038" != yes; then + AC_MSG_WARN( + [The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC="${CC} -m64"' perhaps?]) + gl_warned_about_y2038=yes + fi + ]) + fi]) +]) + +AC_DEFUN([gl_YEAR2038], +[ + gl_YEAR2038_BODY([require-year2038-safe]) +]) diff --git a/m4/zzgnulib.m4 b/m4/zzgnulib.m4 new file mode 100644 index 0000000..fd73a20 --- /dev/null +++ b/m4/zzgnulib.m4 @@ -0,0 +1,23 @@ +# zzgnulib.m4 serial 1 +dnl Copyright (C) 2020-2022 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..382c74d 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-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 @@ -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..1f2afe3 100644 --- a/mk/Amiga.mk +++ b/mk/Amiga.mk @@ -2,7 +2,7 @@ # # Amiga overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-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 @@ -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..33ef306 100644 --- a/mk/VMS.mk +++ b/mk/VMS.mk @@ -2,7 +2,7 @@ # # VMS overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-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 @@ -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..310fe7b 100644 --- a/mk/Windows32.mk +++ b/mk/Windows32.mk @@ -2,7 +2,7 @@ # # Windows overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-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 @@ -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..98bfe0d 100644 --- a/mk/msdosdjgpp.mk +++ b/mk/msdosdjgpp.mk @@ -2,7 +2,7 @@ # # MS-DOS overrides for use with Basic.mk. # -# Copyright (C) 2017-2020 Free Software Foundation, Inc. +# Copyright (C) 2017-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 @@ -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/POTFILES.in b/po/POTFILES.in index 46e53ef..040d60f 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-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 @@ -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 0908d0afc6260320a23160810f31ded080eb9adf..2fa713b3238195483e9271a387cffcdebff99bc3 100644 GIT binary patch delta 1544 zcmXxkOGs2v9LMqhG&<&Jmd|`7`6$!0d`}NEEw#dMky=@iAhhV=qHy7&#jOYt%tcIE zL|8$zsw^jhC>SDgDMZq=h!A?%s^>EMmoO8Kz?m7Sex%0I4Po?uIEpE&x zZPYc?)@5dW*dIqj`4w-r5*Khe`T}MvFo=1WjRjbT?RXFy@DA?8kKQ;h!7P#SVJyNv zOg3}uGM!v*T*WkefGHS7y>P}e=G~ve)!hGyIheph`B;b<*yP!b#f(p3Hjbh;av!YH>Ob&{`O2}xh0HCP!n~aCOC&lcoDg5l!l$ybyQ^TdE+TeXB_o>hXljs zks#X-4DxVm3DgTFQ9FN)T=s!R5&DdU_!kw? zd{(XZRG=0dLPsHQp`(cpp?=VdTy}wmVAvJZipQ`5Z=fc8gNoQJ4*S@VcYlyDC=x?7 z3jH z-eM=tA(z#%J*BK2wcs99N{^!!@Ei*;h8z|591$VMsu-xSaQASi-=Kz~9ko(xsg+bk zNF|A?MXPLE#Lct1ZB(U>L+}2tfbFL0fUCHhT0r!yTxYg!o@g%OEHQ~ zm@WGbuHgO*F2b)+3;7Yb%ngbV<(PXeH_Dh4AtR9R7bN|hu4tH z{7J!zOz4hMgchLgm*WBqm)(Q}$2^anjBj3|LexzTxy;)X>hJ?xixYS^ev8ZS8Y+bI z8J!@RUYw78sDXB%BC!{F)nrf+JBZ8ieN-f;F{^bix|P{_$m$% z@7*|w12~W6s)OgS4PQo0EQf3GV{FB5Q2qaf+OmZWrAV$sMR0us@z<#zqCtE8INEQi>C;?Ab^JSO1sxm=qH3PT2)>B=a?hbwTttFsE}6QF|JqH?5!vwdadb6Uv~)JaU$TPf`=X+?fs{{kgI#4W{)Q3rro4} z(9ijY{KIb2edfRAX8d>EbZJ^{hNp*UzsNhs{G;WGy8^dI+!t>0e_kv6(73ZA^3PJ# zjV+Hd*(Z+M~l)J!ea+a!|e(E3fbKyc)Q%hxau-^Q4 P&5LTvYg9cy*nIA9u<0t; diff --git a/po/be.po b/po/be.po index 12408f1..9f9803f 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -132,221 +137,251 @@ msgstr "" "\n" "# Тэчкі\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1094 +#: src/dir.c:1126 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Не" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " файлаў, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "не" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr "" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " так далёка." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:290 +#: src/file.c:284 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:407 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Выдаляецца файл \"%s\"" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Бягучы час" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: адбітак часу па-за дапушчальнымі межамі, падстаўляецца %s" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# Ня мэта:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1025 +#: src/file.c:1098 #, fuzzy msgid "# Command line target." msgstr "загадны радок" -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Так сама робяцца:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Час зьмяненьня ніколі не правяраўся." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Файл ня йснуе." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Файл вельмі стары." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Апошняе зьмяненьне %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Файл быў абноўлены." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Файл ня быў абноўлены." -#: src/file.c:1062 +#: src/file.c:1139 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1065 +#: src/file.c:1142 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Пасьпяхова абноўлены." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -354,131 +389,149 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1196 #, 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:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "" + +#: 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 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, fuzzy, c-format msgid "write: %s: %s" msgstr "%s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: нерэчаісны выбар -- %c.\n" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Ня зроблена для гэтае плятформы: функцыя \"%s\"" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" @@ -568,235 +621,295 @@ 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:326 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:501 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:717 +#: src/implicit.c:768 #, 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:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Файл \"%s\" ня йснуе.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 #, 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:886 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/job.c:370 +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:380 #, fuzzy -msgid "Cannot create a temporary file\n" +msgid "Cannot create a temporary file" msgstr "fwrite (часовы файл)" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 #, fuzzy msgid "" msgstr " (убудаваны):" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чакаюцца незавершаныя працы...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1071 +#: src/job.c:1083 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1146 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1583 src/job.c:2497 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1587 src/job.c:2501 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1650 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1883 #, 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:1905 +#: src/job.c:1909 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s" -#: src/job.c:2108 +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Файл ня йснуе." + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2530 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -806,162 +919,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:317 msgid "Options:\n" msgstr "Выбары:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:350 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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:355 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:358 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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:368 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:370 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не адлюстроўваць загады.\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -969,64 +1102,97 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Выключае -k.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:384 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Друкуе бягучую тэчку.\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:392 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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "пусты радок нерэчаісны ў якасьці назвы файла" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Гэта праграма пабудавана для %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Гэта праграма падубавана для %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Паведамляйце пра памылкі на .\n" + +#: src/main.c:940 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:947 #, c-format msgid "" "\n" @@ -1036,754 +1202,777 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:956 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1028 src/main.c:1042 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1098 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (часовы файл): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (часовы файл)" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Абнаўляюцца make-файлы....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2323 +#: src/main.c:2548 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2328 +#: src/main.c:2552 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "unlink (часовы файл): " - -#: src/main.c:2555 +#: src/main.c:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Няма мэт" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:2965 +#: src/main.c:3267 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:3363 +#: src/main.c:3652 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "Гэта праграма пабудавана для %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "Гэта праграма падубавана для %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3692 #, 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:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "" +#: src/misc.c:605 +#, fuzzy, c-format +msgid "%s value %s: not a directory" +msgstr "%s: выхад зь невядомае тэчкі" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:791 -msgid "Make access" -msgstr "" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite (часовы файл)" -#: src/misc.c:825 -msgid "Child access" -msgstr "" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (часовы файл): " -#: src/output.c:97 +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (часовы файл)" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr "" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 #, fuzzy msgid "duping jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, 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:363 msgid "write jobserver" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 #, fuzzy msgid "pselect jobs pipe" msgstr "ствараецца трубаправод прац" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Чытаецца make-файл \"%s\"" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (няма дапомнае мэты)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (пошук шляху)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr "" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr "" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1053 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "прапушчана правіла перад загадамі" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, fuzzy, c-format msgid "missing separator" msgstr "прапушчан падзяляльнік %s" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "" -#: src/read.c:1404 +#: src/read.c:1349 #, fuzzy, c-format msgid "missing 'endif'" msgstr "прапушчаны \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "" -#: src/read.c:1503 +#: src/read.c:1448 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "прапушчаны \"endef\", незавершаны \"define\"" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "" -#: src/read.c:1604 +#: src/read.c:1549 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "зьнешні \"%s\"" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "Нічога ня было зроблена для \"%s\"." -#: src/remake.c:227 +#: src/remake.c:255 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "\"%s\" - састарэл(а)." -#: src/remake.c:323 +#: src/remake.c:350 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Усё яшэ абнаўляецца файл \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" -#: src/remake.c:444 +#: src/remake.c:471 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "Файл \"%s\" ужо быў разгледжаны.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "Усё яшэ абнаўляецца файл \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:484 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:486 +#: src/remake.c:513 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:509 src/remake.c:1041 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "" +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:515 +#: src/remake.c:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:674 +#: src/remake.c:737 #, fuzzy, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:694 +#: src/remake.c:757 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "Скончана абнаўленьне файла \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "" -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Файл \"%s\" ня йснуе.\n" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:865 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:891 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:913 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1118 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "Невядомы ўбудаваны загад \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2174,45 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "аўтаматычна" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "дапомны" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "асяродзьдзе" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "make-файл" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "загадны радок" -#: src/variable.c:1671 +#: src/variable.c:1804 #, fuzzy msgid "'override' directive" msgstr "дырэктыва \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1814 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (з \"%s\", радок %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2031,26 +2220,26 @@ msgstr "" "\n" "# Пераменныя\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 +#: src/variable.h:237 #, fuzzy, c-format msgid "warning: undefined variable '%.*s'" msgstr "Увага! Нявызначаная пераменная \"%.*s\"" @@ -2075,83 +2264,93 @@ 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:600 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:617 #, fuzzy msgid "# No 'vpath' search paths." msgstr " (пошук шляху)" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:628 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] Памылка 0x%x" @@ -2185,6 +2384,9 @@ msgstr "" #~ msgid "virtual memory exhausted" #~ msgstr "віртуальная памяць вычарпана" +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: карыстальнік %lu (насамрэч %lu), група %lu (насамрэч %lu)\n" + #~ msgid "invalid `override' directive" #~ msgstr "нерэчаісная дырэктыва \"override\"" diff --git a/po/bg.gmo b/po/bg.gmo index ea867cc5b45a9cce894ffb585ec57159b8f28d93..f1916d104e084439992a2044042ef1573121495a 100644 GIT binary patch delta 15731 zcmbW62Y6J~wt&xsNN)ksAb|-GT0$tHgir$nh}2LFO&}qYFpy+IWp35(8K7yWcy0i+`12AjZ5um(I0E5eUp6ubgk z!oX&R5d_;pJM0am-2sE4f^_v7FQ7D{p%{k1f52+6YIDPoHPnS+FaZvMsjxHL1RKK7 zU_EGSp(l!j9_(�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 diff --git a/po/bg.po b/po/bg.po index 641201e..1f9b26d 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 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. # 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-04 12:41+0100\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 10:55+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:1107 msgid "" "\n" "# Directories\n" @@ -133,220 +138,252 @@ msgstr "" "\n" "# Директории\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, време на промяна %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, i-възел [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, i-възел %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Няма" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " файлове, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "няма" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " пречки" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " засега." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецептата е указана за файл „%s“ при %s:%lu," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Рецептата за файла „%s“ бе открита при търсене на вградените правила." -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но сега „%s“ се счита за същия файл като „%s“." -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "единичното двоеточие „%s“ не може да се преименува на двойно двоеточие „%s“" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "двойното двоеточие „%s“ не може да се преименува на единично двоеточие „%s“" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "••• Изтриване на междинния файл „%s“" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Изтриване на междинните файлове…\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ са несъвместими" + +#: src/file.c:942 msgid "Current time" msgstr "Текущо време" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: времевото клеймо е извън диапазона, замества се с „%s“" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# Не е цел:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ценен файл (изискване на „.PRECIOUS“)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Фалшива цел (изискване на „.PHONY“)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Цел на командния ред." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Вградено правило" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Търсенето във вградените правила е извършено." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Търсенето във вградените правила не е извършено." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Вградена/статична основа на шаблон: „%s“\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Файлът е междинно изискване." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файлът е изискване на „.NOTINTERMEDIATE.“" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Вторичен файл (изискване на „.SECONDARY“)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Също изгражда:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Времето на промяна не е проверено." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Файлът не съществува." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Файлът е много стар." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Последна промяна на „%s“\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Файлът е обновен." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Файлът не е обновен." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецептата в момента се изпълнява (това е ГРЕШКА)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецептата за зависимостите в момента се изпълнява (това е ГРЕШКА)" -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Успешно обновено." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Трябва да бъде обновено („-q“ е зададена)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Неуспешно обновяване." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Неправилна стойност в член на „command_state“!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# Файлове" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -364,126 +401,144 @@ msgstr "" "# статистика за речника за файлове:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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“ трябва да е положително число" -#: 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" +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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "файл: липсва име на файл" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "отваряне: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "запазване: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "затваряне: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "файл: прекалено много аргументи" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "четене: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: неправилно действие върху файл: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "без реализация на тази платформа: функция „%s“" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавършено извикване на функцията „%s“: липсва „%c“" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "Празно име на функция" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Грешно име на функция: „%s“" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Името на функцията е твърде дълго: „%s“" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неправилен минимален брой аргументи (%u) за функцията „%s“" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неправилен максимален брой аргументи (%u) за функцията „%s“" @@ -573,133 +628,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:326 #, 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:451 #, 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:501 #, 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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Твърде дълга основа: „%s%.*s“.\n" -#: src/implicit.c:718 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Отхвърляне на невъзможно вградено изискване „%s“.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Отхвърляне на правилото „%s“ заради неизпълнимото изискване „%s“.\n" -#: src/implicit.c:732 +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Отхвърляне на правилото „%s“ заради неизпълнимото вградено изискване „%s“.\n" + +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Опитване на изискването „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Опитване на вграденото изискване „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ задължително трябва да съществува.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "„%s“ е открит.\n" + +#: src/implicit.c:842 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Изисканото „%s“ е открито чрез „VPATH“ като „%s“\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Използва се правилото за съвместимост „%s“ заради „%s“.\n" -#: src/implicit.c:786 +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Изискването „%s“ на целта „%s“ не се квалифицира като задължително да " +"съществува.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Изисканото „%s“ е открито чрез „VPATH“ „%s“.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Търсене на правило с изричен файл „%s“.\n" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Отхвърляне на правило „%s“ заради неизпълнимото изискване „%s“.\n" -#: src/job.c:548 +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ липсва.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Открито е вградено правило „%s“ за „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Търсене на правило за съвместимост за „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не е открито вградено правило за „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Не може да се създаде временен файл" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (прескачане)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<вградено>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "••• Изчакване на незавършени задачи…" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (отдалечено)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Приключване на спечелелия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Приключване на изгубилия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Изчистване на временен файл за пакетна обработка „%s“\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Неуспешно изчистване на временен файл за пакетна обработка „%s“: %d\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -708,95 +826,92 @@ msgstr "" "\n" "При неуспешно стартиране са изброени %d аргумента\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен е жетон за дъщерен процес %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: целта „%s“ не съществува" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: обновяване на целта „%s“ заради: %s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "целта не съществува" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "на тази операционна система не могат да се налагат ограничения за " "натоварването" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "ограничението не може да бъде наложено: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" -msgstr "Стандартният вход не може да се възстанови\n" +msgid "Could not restore stdin" +msgstr "Стандартният вход не може да се възстанови" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" -msgstr "Стандартният изход не може да се възстанови\n" +msgid "Could not restore stdout" +msgstr "Стандартният изход не може да се възстанови" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" -msgstr "Стандартната грешка не може да се възстанови\n" +msgid "Could not restore stderr" +msgstr "Стандартната грешка не може да се възстанови" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: пространството на средата може да е изчерпано" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Не може да се създаде временен файл за пакетна обработка в „%s“\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -805,7 +920,7 @@ msgstr "" "Съдържание на файл за пакетна обработка:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -814,7 +929,7 @@ msgstr "" "Съдържание на файла за пакетна обработка:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -825,44 +940,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 "Unloading shared object %s\n" +msgstr "Изключване на споделен обект %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 "Операцията за зареждане („load“) не се поддържа на тази платформа" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Опции:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m прескача се, за съвместимост\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безусловно изграждане на всички цели\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -871,16 +996,16 @@ msgstr "" " преминаване към тази ДИРЕКТОРИЯ, преди да се\n" " прави каквото и да е\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d информация за изчистване на грешки\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=ФЛАГОВЕ] вид информация за изчистване на грешки\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -891,14 +1016,14 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -908,15 +1033,15 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help извеждане на тази помощ и изход\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -924,7 +1049,7 @@ msgstr "" " -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n" " търсене на вмъкнатите файлове в ДИРЕКТОРИЯта\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -933,14 +1058,19 @@ msgstr "" "БРОЙ,\n" " без аргумент — без ограничения\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛ избор на ползвания стил за сървъра за задачи\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -950,7 +1080,7 @@ msgstr "" " множество задачи се стартират, само ако\n" " натоварването е ≤N\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -958,7 +1088,7 @@ msgstr "" " -L, --check-symlink-times използване на минималното време на промяна\n" " измежду символна връзка и целта ѝ\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -967,7 +1097,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " извеждане на целите без изпълнение\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -977,7 +1107,7 @@ msgstr "" " без преизграждане на ФАЙЛа, който да се\n" " счита за много стар\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -986,13 +1116,13 @@ msgstr "" " ВИД синхронизация на изхода от паралелните " "задачи\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1000,27 +1130,35 @@ msgstr "" " -q, --question без изпълнение на цели, само изходният код\n" " да указва дали те са актуални\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet без извеждане на рецептите\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent извеждане на рецептите (изключване на „--" "silent“)\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1028,29 +1166,29 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Изключване на „-k“\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch обновяване на информацията чрез „touch“ " "вместо\n" " ново изграждане\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr "" " --trace извеждане на информация за изчистване на " "грешки\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version извеждане на версията и изход\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory извеждане на текущата директория\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1058,7 +1196,7 @@ msgstr "" " --no-print-directory изключване на „-w“, дори ако вградената\n" " функционалност я е включила\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1066,7 +1204,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " считане на ФАЙЛа за абсолютно нов\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1074,27 +1212,62 @@ msgstr "" " --warn-undefined-variables предупреждаване при използването\n" " на незададена променлива\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "грешка при запис: стандартна грешка" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "задаването на празен низ за име на файл е грешка" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "неправилно ниво за изчистване на грешки „%s“" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "непознат вид синхронизация „%s“ към опцията „--output-sync“" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [ОПЦИЯ]… [ФАЙЛ]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Тази програма е изградена за %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Тази програма е изградена за %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Съобщавайте за програмни грешки на .\n" +"За грешки в българския превод на .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1109,28 +1282,32 @@ msgstr "" "Флагове на изключение = %lx\n" "Адрес на изключение = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение на достъпа: операция за запис на адрес 0x%p\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "изтриване („unlink“ на временен файл): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1138,186 +1315,170 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: сървърът за задачи не е наличен, ползва се „-j1“. Добавете " "„+“ към родителското правило на „make“." -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:1781 +#: src/main.c:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "запис („fwrite“ на временен файл)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "запис („fwrite“ на временен файл) %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Тази система не поддържа паралелни задачи („-j“)." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Преминаване към еднозадачен режим (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Използва се контролер за сървъра за задачи „%s“\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Използва се ключалка за синхронизация на изхода: %s\n" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Не се поддържат символни връзки: „-L“ се изключва." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Включен е режимът на разбъркване: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Обновяване на управляващите изграждането файлове (makefile)…\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Управляващият изграждането файл „%s“ може да зацикли, затова не се " "пресъздава.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не може да се зареди" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Неуспешно пресъздаване на управляващия изграждането файл „%s“" -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Вмъкнатият управляващ изграждането файл „%s“ липсва" -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Управляващият изграждането файл „%s“ липсва" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "Стандартната цел „.DEFAULT_GOAL“ съдържа повече от една цел" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Няма цели" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Не е зададена цел, а и липсва управляващ изграждането файл" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Обновяване на целите…\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "опцията „%s%s“ изисква непразен аргумент-низ" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "опцията „%c“ изисква положителен, целочислен аргумент" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградена за %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградена за %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1326,7 +1487,7 @@ msgstr "" "\n" "# Информация за „make“, отпечатана на %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1335,386 +1496,417 @@ msgstr "" "\n" "# Край на информацията за „make“, отпечатана на %s\n" -#: src/misc.c:643 +#: src/misc.c:602 #, 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:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s стойност %s: не е директория" -#: src/misc.c:743 -msgid "User access" -msgstr "Потребителски достъп" +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "използване на стандартната диретория за временни файлове за „%s“" -#: src/misc.c:791 -msgid "Make access" -msgstr "Задаване на достъп" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "създаване на временен файл %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Дъщерен процес" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "изтриване („unlink“ на временен файл) %s: %s" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "отваряне („fdopen“ на временен файл) %s: %s" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "грешка при запис: стандартна грешка" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"ПРЕДУПРЕЖДЕНИЕ: ключалката за изхода не може да се придобие, синхронизацията " +"на изхода се изключва." -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Край.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Сървърът за задачи не може да се отвори %s: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "създаване на програмен канал със задачи" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "дублиране на програмен канал със задачи" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, 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:363 msgid "write jobserver" msgstr "запис на сървър за задачи" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "спиране на сървъра за задачи" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "грешка в „pselect“ в канала за задачи" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "грешка при четене в канала за задачи" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неправилен низ към „--sync-mutex“: „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "ключалката за синхронизацията на изхода не може да се отвори %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Изчитане на файла управляващ изграждането „%s“" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (няма стандартна цел)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (търсене в път)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (без значение)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (без заместване на „~“)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" "Прескачанe на знака за подредба на байтовете за UTF-8 (BOM) в буфера на " "файла управляващ изграждането\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "рецепта почва преди първата цел" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "липсващо правило преди рецепта" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "липсва разделител" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "липсва целеви шаблон" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "множество целеви шаблони" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "целевият шаблон не съдържа „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "липсващ „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "празно име на променлива" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "излишен текст след директива „define“" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "„endef“ липсва — някоя директива „define“ не е завършена" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "излишен текст след директива „endef“" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "излишен текст след директива „%s“" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "излишен „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "може да има максимално една директива „else“ за условен израз" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Неправилна дефиниция на променлива, зависеща от целта" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "цел „.WAIT“ не може да има изисквания" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "цел „.WAIT“ не може да съдържа команди" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "изискванията не могат да се дефинират в рецептите" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "целите в група трябва да предоставят рецепта" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "вградените и правилата със статични шаблони са смесени" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "вградените и изричните правила са смесени" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "целта „%s“ не съвпада с целта на шаблона" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "целевият файл „%s“ съдържа записи и с „:“, и с „::“" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "целта „%s“ е дадена повече от веднъж в едно правило" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: заместване на рецептата за целта „%s“" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: старата рецепта за „%s“ се прескача" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "••• смесване на вградени и обикновени правила: остарял синтаксис" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: заместване на групата на целта „%s“" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Няма нищо за правене за „%s“." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "„%s“ няма нужда да се обновява." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Окастряне на файл „%s“\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНяма правило за изграждане на целта „%s“%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Разглеждане на целевия файл „%s“\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Скорошен неуспешен опит за обновяване на файла „%s“\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файлът „%s“ вече е разгледан.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Все още се обновява файл „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Завършване на обновяването на файл „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Файлът „%s“ не съществува.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1723,147 +1915,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:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Използване на стандартната рецепта за „%s“.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Цикличната зависимост „%s“ ← „%s“ се прескача." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Изискванията за целевия файл „%s“ са завършени.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Изискванията на „%s“ се изграждат.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Отказ за изграждане на целевия файл „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Целта „%s“ не е преизградена поради грешки." -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Изискването „%s“ е само за последователност за целта „%s“.\n" -#: src/remake.c:756 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Изискването „%s“ на целта „%s“ не съществува.\n" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Изискването „%s“ е по-ново от целта „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Изискването „%s“ е по-старо от целта „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Целта е „%s“ е „::“ и няма изисквания.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Няма рецепта за „%s“ и никое от изискванията не е променено.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "„%s“ се изгражда наново поради флаг за изрично преизграждане.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "Няма нужда за преизграждане на целта „%s“" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; използва се име от „VPATH“ „%s“" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Целта „%s“ трябва да се преизгради.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Прескачане на името от „VPATH“ „%s“.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Рецептата за „%s“ в момента се изпълнява.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Неуспешно преизграждане на целевия файл „%s“\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Успешно преизграждане на целевия файл „%s“\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Целевият файл „%s“ трябва да се преизгради при „-q“.\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Използват се стандартни команди за „%s“.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "ПРЕДУПРЕЖДЕНИЕ: файлът „%s“ е с време на промяна %s сек. в бъдещето" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2058,7 @@ msgstr "" "\n" "# Вградени правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1879,7 +2066,7 @@ msgstr "" "\n" "# Няма вградени правила." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1888,12 +2075,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 +2300,44 @@ msgstr "" "# статистика на речника:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "автоматично" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "стандартно" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "среда" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "файл управляващ изграждането" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "обкръжението е твърде голямо за „exec“" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "команден ред" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "директива „override“" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (от „%s“, ред %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# статистика за множеството на променливите в речника:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2153,7 +2345,7 @@ msgstr "" "\n" "# Променливи\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2161,7 +2353,7 @@ msgstr "" "\n" "# Стойности на променливи, зависещи от шаблона" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2169,7 +2361,7 @@ msgstr "" "\n" "# Няма стойности на променливи, зависещи от шаблона" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2178,7 +2370,7 @@ msgstr "" "\n" "# %u стойности на променливи, зависещи от шаблона" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "ПРЕДУПРЕЖДЕНИЕ: недефинирана променлива „%.*s“" @@ -2205,22 +2397,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2228,11 +2420,11 @@ msgstr "" "\n" "# Пътища за търсене „VPATH“\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Няма пътища за търсене във „VPATH“" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2241,7 +2433,7 @@ msgstr "" "\n" "# %u пътища за търсене във „VPATH“\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2249,7 +2441,7 @@ msgstr "" "\n" "# Няма общ път (във „VPATH“) за търсене" -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2259,17 +2451,17 @@ 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" -#: 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)" @@ -2277,17 +2469,27 @@ msgstr "" "ВЪТРЕШНА ГРЕШКА: семафорът на сървъра за задачи не може да се отвори „%s“: " "(грешка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клиент на сървър за задачи (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "освобождаване на семафора на сървъра за задачи: (грешка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "изчакване на семафор или дъщерен процес: (Грешка %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "ключалката за синхронизация на изхода не може да се анализира %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неправилен вид ключалка за синхронизация на изхода: %s" diff --git a/po/cs.gmo b/po/cs.gmo index a59c5728008f7b135778a1b9069e8dc6bc476de8..2b8e87fd08889d266a245847b068268f3167ac00 100644 GIT binary patch delta 15255 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 delta 10817 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 F{|_b6;#B|u diff --git a/po/cs.po b/po/cs.po index e3ab2cb..5e3eb7a 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. # # 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.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 17:47+01:00\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 20:18+02: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:1107 msgid "" "\n" "# Directories\n" @@ -153,223 +159,253 @@ msgstr "" "\n" "# Adresáře\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klíč %s, čas změny obsahu %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Žádný" # TODO: Pluralize -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " souborů, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "žádný " # TODO: Pluralize -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " nemožností " -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " zatím." # TODO: Pluralize -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "Maže se mezilehlý soubor „%s“ " -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Odstraňují se mezilehlé soubory…\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE a .SECONDARY se vzájemně vylučují" + +#: src/file.c:942 msgid "Current time" msgstr "Aktuální čas" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Není cílem:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# FaleÅ¡ný cíl (prerekvizita k .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Cíl příkazové řádky." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Default, MAKEFILES nebo -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Vestavěné pravidlo" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Hledalo se za pomoci implicitních pravidel." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Nehledalo se za pomoci implicitních pravidel." -#: src/file.c:1034 +#: src/file.c:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." msgstr "# Soubor je mezilehlá prerekvizita." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Soubor je prerekvizita k .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Souboru je druhotný (prerekvizita k .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Rovněž vyrábí:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Čas změny obsahu se nikdy nekontroluje." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Soubor neexistuje." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Soubor je velmi starý." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Obsah naposledy změněn v %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Soubor byl aktualizován." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Soubor nebyl aktualizován." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Úspěšně aktualizováno." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Je třeba aktualizovat (-q je nastaveno)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Aktualizace selhala." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Neplatná hodnota v členu „command_state“!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -377,7 +413,7 @@ msgstr "" "\n" "# Soubory" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -387,125 +423,145 @@ msgstr "" "# Statistika haÅ¡ovací tabulky souborů:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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:799 +#: 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: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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "soubor: chybí název souboru" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "otevření: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "zápis: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "zavření: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "soubor: příliÅ¡ mnoho argumentů" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "čtení: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "soubor: neplatná operace na souboru: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Prázdný název funkce" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Neplatný název funkce: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Název funkce je příliÅ¡ dlouhý: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Neplatný maximální počet argumentů (%u) funkce %s" @@ -596,135 +652,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:326 #, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Zkouší se důkladněji.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Zkouší se pravidlo vzoru „%s“ s kořenem „%.*s“.\n" -#: src/implicit.c:490 +#: src/implicit.c:506 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Zkouší se pravidlo vzoru s kořenem „%.*s“.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Kořen je příliÅ¡ dlouhý: „%s%.*s“.\n" -#: src/implicit.c:717 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Zamítá se nemožná prerekvizita pravidla „%s“.\n" +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:718 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Zamítá se nemožná implicitní prerekvizita „%s“.\n" +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:732 +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Zkouší se prerekvizita pravidla „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Zkouší se implicitní prerekvizita „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ by mělo existovat.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Nalezeno „%s“.\n" + +#: src/implicit.c:842 +#, 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:856 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“\n" +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:786 +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“.\n" + +#: src/implicit.c:885 +#, 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:886 #, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ nebylo nenalezeno.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Nalezeno implicitní pravidlo „%s“ pro „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Hledá se pravidlo kompatibility pro „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Dočasný soubor nelze vytvořit" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (obraz paměti uložen)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignorováno)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Čeká se na nedokončené úlohy…" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (vzdálený)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -733,86 +849,85 @@ msgstr "" "\n" "Napočítáno %d argumentů v selhaném spuÅ¡tění\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Získán token pro potomka %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: cíl „%s“ neexistuje" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "cíl neexistuje" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "omezení zátěže nelze vynutit: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" @@ -821,7 +936,7 @@ msgstr "" "Obsah dávkového souboru:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -830,7 +945,7 @@ msgstr "" "Obsah dávkového souboru:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +955,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 "Unloading shared object %s\n" +msgstr "Uvolňuje se sdílený objekt %s\n" + +#: 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." +msgid "The 'load' operation is not supported on this platform" +msgstr "Na této platformě není operace zavedení (load) podporována" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Přepínače:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoruje se kvůli kompatibilitě.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -885,17 +1010,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:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Vypisuje mnoho ladicích údajů.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -903,12 +1028,12 @@ msgstr "" " -e, --environment-overrides\n" " Proměnné prostředí přebijí ty z makefilu.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -916,15 +1041,15 @@ msgstr "" " -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n" " Načte SOUBOR coby makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -932,7 +1057,7 @@ msgstr "" " -I ADRESÁŘ, --include-dir=ADRESÁŘ\n" " Vložené makefily hledá v ADRESÁŘI.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -940,13 +1065,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:346 +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:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -956,7 +1085,7 @@ msgstr "" " NespouÅ¡tí souběžné úlohy, dokud zátěž\n" " neklesne pod N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -964,7 +1093,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -974,7 +1103,7 @@ msgstr "" " Ve skutečnosti nevykoná žádný návod, pouze\n" " jej vypíše.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -984,7 +1113,7 @@ msgstr "" " Považuje SOUBOR za velmi starý a znovu jej\n" " nevyrobí.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -993,11 +1122,11 @@ msgstr "" " Synchronizuje výstup souběžných úloh podle " "DRUHU.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1005,23 +1134,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:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Neopisuje návod.\n" -#: src/main.c:390 +#: src/main.c:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1029,32 +1168,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Vypne -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Vypisuje trasovací údaje.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1062,7 +1201,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1070,27 +1209,62 @@ msgstr "" " --warn-undefined-variables Upozorní, kdykoliv je odkazováno na\n" " nedefinovanou proměnnou.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "chyba zápisu: standardní výstup" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "zadána neznámá úroveň ladění „%s“" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "neznámý druh synchronizace výstupu „%s“" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Použití: %s [PŘEPÍNAČE] [CÍLE]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s (%s)\n" + +#: src/main.c:909 +#, 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:940 #, 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:947 #, c-format msgid "" "\n" @@ -1105,28 +1279,32 @@ msgstr "" "Příznaky výjimky = %lx\n" "Adresa výjimky = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (dočasný soubor): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1134,175 +1312,163 @@ 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:1841 #, 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:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (dočasný soubor)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: dočasný soubor %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jako řadič správce úloh se používá %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Jako mutex pro synchronizaci výstupu se používá %s\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Zapnut způsob míchání: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Soubory makefile se aktualizují…\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: zavedení selhalo" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Výroba nového makefilu „%s“ selhala." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Vložený makefile „%s“ nebyl nalezen." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nebyl nalezen" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Žádné cíle" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Aktualizují se cíle…\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sSestaveno pro %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s Sestaveno pro %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1312,7 +1478,7 @@ msgstr "" "# Databáze maku vypsána v %s" # FIXME: i18n %s (time) -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1321,381 +1487,410 @@ msgstr "" "\n" "# Konec databáze maku v %s\n" -#: src/misc.c:643 +#: src/misc.c:602 #, 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:605 +#, 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:613 +#, 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "vytvoření dočasného souboru %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Přístup potomkem" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "smazání dočasného souboru %s: %s" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: dočasný soubor %s: %s" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "chyba zápisu: standardní výstup" +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:475 msgid ". Stop.\n" msgstr ". Konec.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "vytváření roury úloh" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplikace roury úloh" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "inicializace roury správce úloh" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "vnitřní chyba: neplatný řetězec --jobserver-auth „%s“" - -#: src/posixos.c:122 +#: src/posixos.c:261 #, 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" +msgid "invalid --jobserver-auth string '%s'" +msgstr "neplatný řetězec --jobserver-auth „%s“" -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "zápis správce úloh" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "správce úloh vypnut" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "volání pselect nad rourou úloh" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "čtení z roury úloh" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "neplatný řetězec --sync-mutex „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "mutex %s pro synchronizaci výstupu nelze otevřít: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Čte se makefile „%s“" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (žádný výchozí cíl)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (vyhledávací cesta)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (nestarat se)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (žádný expanze ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, 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:1053 #, c-format msgid "missing rule before recipe" msgstr "před návodem chybí pravidlo" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "chybí oddělovač" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "chybí vzor cíle" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "více vzorů cíle" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "vzor cíle neobsahuje „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "chybí „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "prázdný název proměnné" -#: src/read.c:1478 +#: src/read.c:1423 #, 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:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "chybí „endef“, neukončený „define“" -#: src/read.c:1531 +#: src/read.c:1476 #, 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:1548 #, 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:1549 #, c-format msgid "extraneous '%s'" msgstr "nadbytečný „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "pouze jeden „else“ na podmínku" -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT by nemělo mít prerekvizity" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT by nemělo mýt příkazy" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "prerekvizitu nelze definovat v návodu" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "seskupené cíle musí poskytovat návod" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "smíšené implicitní a statická pravidla vzorů" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "smíšené implicitní a normální pravidla" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Pro „%s“ nebude nic uděláno." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "„%s“ je aktuální." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Uklízí se soubor „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Zvažuje se cílový soubor „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Soubor „%s“ již byl uvážen.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Stále se aktualizuje soubor „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aktualizace soubor „%s“ dokončena.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Soubor „%s“ neexistuje.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1703,149 +1898,143 @@ msgstr "" "*** Pozor: Soubor .LOW_RESOLUTION_TIME „%s“ má časový údaj ve vysokém " "rozliÅ¡ení" -#: src/remake.c:507 src/remake.c:1039 -#, 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 +#: src/remake.c:538 #, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kruhová závislost „%s ← %s zahozena." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; použije se název „%s“ z VPATH" -#: src/remake.c:824 +#: src/remake.c:891 #, 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:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignoruje se název „%s“ z VPATH.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2042,7 @@ msgstr "" "\n" "# Implicitní pravidla" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1862,7 +2051,7 @@ msgstr "" "# Žádná implicitní pravidla." # FIXME: Pluralize -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1871,11 +2060,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 +2288,44 @@ msgstr "" "# Statistika haÅ¡ovací tabulky:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatická" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "výchozí" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "prostředí" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "prostředí z přepínače -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "příkazový řádek" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "klíčové slovo „override“" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (z „%s“, řádek %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2139,7 +2333,7 @@ msgstr "" "\n" "# Proměnné\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2147,7 +2341,7 @@ msgstr "" "\n" "# Hodnoty proměnných specifických pro vzor" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2156,7 +2350,7 @@ msgstr "" "# Žádné hodnoty proměnných specifických pro vzor." # FIXME: Pluralize -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2165,7 +2359,7 @@ msgstr "" "\n" "# Hodnot proměnných specifických pro vzor: %u" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "pozor: nedefinovaná proměnná „%.*s“" @@ -2190,22 +2384,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2213,12 +2407,12 @@ msgstr "" "\n" "# Vyhledávací cesty VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Žádné vyhledávací cesty „vpath“." # FIXME: Pluralize -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2227,7 +2421,7 @@ msgstr "" "\n" "$ Vyhledávacích cest „vpath“: %u\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2235,7 +2429,7 @@ msgstr "" "\n" "# Žádná obecná vyhledávací cesta (proměnná „VPATH“)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2245,38 +2439,82 @@ 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" -#: 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)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, 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:310 #, 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:381 #, 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:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "mutex pro synchronizaci výstupu %s nelze rozebrat: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "neplatný mutex pro synchronizaci výstupu: %s" + +#~ 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 41d50a294df0277269b86a442c08dea7e8498260..85210a99efb081e0b42dcef8ebfebdee1e75caeb 100644 GIT binary patch delta 15820 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 delta 10774 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 h7tF67tup?{%1!gflTFRz8?SyUx, 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -142,219 +147,250 @@ msgstr "" "\n" "# Filkataloger\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nøgle %s, mtime %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Ingen" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " filer, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "ingen" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " umuligheder" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " indtil videre." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Sletter mellemfil \"%s\"" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Sletter mellemfiler ...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE og .SECONDARY udelukker hinanden" + +#: src/file.c:942 msgid "Current time" msgstr "Aktuel tid" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Ikke et mÃ¥l:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Falsk mÃ¥l (forudsætning for .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# KommandolinjemÃ¥l." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Indbygget regel" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Der er udført implicit regelsøgning." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Der er ikke udført implicit regelsøgning." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Filen er en mellemfil." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen er en forudsætning for .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen er sekundær (forudsætning for .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Skaber ogsÃ¥:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Ændringstid ikke tjekket." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Filen findes ikke." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Filen er meget gammel." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Sidst ændret %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Filen er blevet opdateret." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Filen er ikke blevet opdateret." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Opdateret med godt resultat." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Behøver opdatering (-q er sat)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Opdatering mislykkedes." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Ugyldig værdi i \"command_state\"-felt!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -362,7 +398,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -372,124 +408,142 @@ msgstr "" "# Statistik for fil-hash-spande:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:799 +#: 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: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:1533 +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ikke-numerisk første argument til \"intcmp\"-funktionen" + +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "fil: mangler filnavn" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "Ã¥bn: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "luk: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "fil: for mange argumenter" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "læs: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "fil: ugyldig filoperation: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ikke implementeret pÃ¥ denne platform: funktionen \"%s\"" -#: src/function.c:2483 +#: src/function.c:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnavn" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Ugyldigt funktionsnavn: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnavn er for langt: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" @@ -566,147 +620,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:326 +#, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Prøver ivrigere.\n" -#: src/implicit.c:490 +#: src/implicit.c:501 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Prøver mønsterregel med stammen \"%.*s\".\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prøver mønsterreglen \"%s\" med stammen \"%.*s\".\n" -#: src/implicit.c:717 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Afviser umulig regelforudsætning \"%s\".\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamme for lang: \"%s%.*s\".\n" -#: src/implicit.c:718 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Afviser umulig implicit forudsæ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:770 +#, c-format +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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prøver regelforudsætning \"%s\".\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Prøver implicit forudsætning \"%s\".\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "\"%s\" bør findes.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Fandt \"%s\".\n" + +#: src/implicit.c:842 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\"\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Bruger kompatibilitetsreglen \"%s\" pÃ¥ grund af \"%s\".\n" -#: src/implicit.c:786 +#: src/implicit.c:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\".\n" + +#: src/implicit.c:885 +#, 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:886 #, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Fandt ikke \"%s\".\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Fandt en implicit regel \"%s\" for \"%s\".\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Kigger efter en kompatibilitetsregel for \"%s\".\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for \"%s\" fundet.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan ikke oprette en midlertidig fil" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (core-fil efterladt)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr "(ignoreret)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Venter pÃ¥ uafsluttede job...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (eksternt)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Rydder midlertidig batchfil %s\n" -#: src/job.c:956 +#: src/job.c:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -715,86 +831,85 @@ msgstr "" "\n" "Talte %d argumenter i fejlet igangsætning\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "mÃ¥let findes ikke" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "kan ikke gennemtvinge belastningsgrænse: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljøplads er mÃ¥ske opbrugt" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Opretter midlertidig batchfil %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -803,7 +918,7 @@ msgstr "" "Indhold af batchfil:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -812,7 +927,7 @@ msgstr "" "Indhold af batchfil:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +937,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 "Unloading shared object %s\n" +msgstr "Afindlæser delt objekt %s\n" + +#: 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." +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen indlæs (\"load\") understøttes ikke pÃ¥ denne platform" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Tilvalg:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -867,19 +992,18 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Skift allerførst til KATALOG.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Udskriv en masse fejlsøgningsinformation.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -887,14 +1011,13 @@ msgstr "" " -e, --environment-overrides\n" " Miljøvariable har forrang for makefiler.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -902,15 +1025,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Læs FIL som en makefil.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -918,31 +1041,36 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Søg i KATALOG efter inkluderede makefiler.\n" -#: src/main.c:362 +#: src/main.c:344 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:346 +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:348 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:350 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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -950,7 +1078,7 @@ msgstr "" " -L, --check-symlink-times Brug sidste mtime mellem symbolske lænker og " "mÃ¥l.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -960,17 +1088,16 @@ msgstr "" " Udfør ikke nogen kommandoer; udskriv dem " "bare.\n" -#: src/main.c:374 +#: src/main.c:358 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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -979,11 +1106,11 @@ msgstr "" " Synkronisér udskrift af parallelle job efter " "TYPE\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -992,28 +1119,34 @@ msgstr "" "angiver\n" " om mÃ¥let er tidssvarende.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,33 +1154,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " SlÃ¥r -k fra.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Udskriv trace-information.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1055,34 +1187,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:395 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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "skrivefejl: stdout" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "en tom streng er ugyldig som filnavn" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\"" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "ukendt type \"%s\" af output-sync" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Brug: %s [tilvalg] [mÃ¥l] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dette program er bygget til %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dette program er bygget til %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Send fejlmeldinger (pÃ¥ engelsk) til .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1097,27 +1262,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (midlertidig fil): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1125,174 +1294,164 @@ msgstr "" "advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til " "ophavsmakeregel." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1841 +#, 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:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (midlertidig fil)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: midlertidig fil %s: %s" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2095 +#, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Bruger jobserverstyring %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Bruger outputsynkroniseringsmutex %s\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Blandet tilstand slÃ¥et til: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Opdaterer makefiler....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: kunne ikke indlæse" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Genskabelse af makefilen \"%s\" mislykkedes." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Inkluderet makefil \"%s\" blev ikke fundet." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen \"%s\" blev ikke fundet" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Ingen mÃ¥l" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Opdaterer endemÃ¥l....\n" # build? -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sBygget til %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sBygget til %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1302,7 +1461,7 @@ msgstr "" "# Makedatabase, udskrevet %s" # %s giver dato og klokkeslæt -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1311,385 +1470,414 @@ msgstr "" "\n" "# Afsluttet makedatabase %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "opret midlertidig fil %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-adgang" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink midlertidig fil %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Barneadgang" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: midlertidig fil %s: %s" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, 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:475 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Kan ikke Ã¥bne jobserver %s: %s" -# build? -#: src/output.h:62 +#: src/posixos.c:186 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]) er ikke konfigureret til denne kompilering." +msgid "Unknown jobserver auth style '%s'" +msgstr "ukendt auth-stil \"%s\" for jobserver" -#: src/posixos.c:90 +#: src/posixos.c:190 msgid "creating jobs pipe" msgstr "opretter job-pipe" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "kopierer job-pipe" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, 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:363 msgid "write jobserver" msgstr "skriv jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "" +msgstr "jobserver lukket ned" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect job-pipe" # ? -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "læs job-pipe" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ugyldig streng \"%s\" til --sync-mutex" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan ikke Ã¥bne outputsynkroniseringsmutex %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Læser makefilen \"%s\"" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (ingen standard-endemÃ¥l)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (søgesti)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (ikke nødvendig)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (ingen ~-udfoldning)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "kommandoer begynder før første mÃ¥l" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "manglende regel før kommandoer" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "manglende skilletegn" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "manglende mÃ¥lmønster" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "flere mÃ¥lmønstre" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "mÃ¥lmønster indeholder ingen \"%%\"" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "mangler \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "tomt variabelnavn" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "overskydende tekst efter \"define\"-direktiv" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "manglende \"endef\", uafsluttet \"define\"" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "overskydende tekst efter \"endef\"-direktiv" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "overskydende tekst efter \"%s\"-direktiv" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "overskydende \"%s\"" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "kun én \"else\" per betingelse" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Misdannet mÃ¥lspecifik variabeldefinition" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT bør ikke have forudsætninger" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT bør ikke have kommandoer" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "blandede implicitte og statiske mønsterregler" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "blandede implicitte og normale regler" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 +#, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ingenting at gøre for \"%s\"." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" er tidssvarende." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Beskærer fil \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Overvejer mÃ¥lfilen \"%s\".\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Filen \"%s\" er allerede overvejet.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Opdaterer stadig fil \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Opdatering af fil \"%s\" afsluttet.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Filen \"%s\" findes ikke.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1697,132 +1885,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:538 #, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Cirkulær %s <- %s afhængighed opgivet." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Opgiver mÃ¥lfil \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; bruger VPATH-navnet \"%s\"" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Skal genskabe mÃ¥let \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignorerer VPATH-navnet \"%s\".\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "MÃ¥lfilen \"%s\" genskabt.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Bruger standardkommandoer for \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS-elementet \"%s\" er ikke et mønster" @@ -1830,17 +2014,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 +2031,7 @@ msgstr "" "\n" "# Implicitte regler" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1856,20 +2039,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 +2237,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 +2274,44 @@ msgstr "" "# statistik for hashtabel:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatisk" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "forvalgt" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "miljø" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefil" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "miljø med -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "kommandolinje" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "\"override\"-direktiv" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (fra \"%s\", linje %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# Statistik for variabelsæt-hash-spande:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2131,7 +2319,7 @@ msgstr "" "\n" "# Variabler\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2139,7 +2327,7 @@ msgstr "" "\n" "# Mønsterspecifikke variabelværdier" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2147,7 +2335,7 @@ msgstr "" "\n" "# Ingen mønsterspecifikke variabelværdier." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2156,7 +2344,7 @@ msgstr "" "\n" "# %u mønsterspecifikke variabelværdier" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "advarsel: udefineret variabel \"%.*s\"" @@ -2182,22 +2370,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2205,11 +2393,11 @@ msgstr "" "\n" "# VPATH-søgestier\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Ingen \"vpath\"-søgestier." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2218,7 +2406,7 @@ msgstr "" "\n" "# %u \"vpath\"-søgestier.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2226,7 +2414,7 @@ msgstr "" "\n" "# Ingen generel (\"VPATH\"-variabel) søgesti." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2236,37 +2424,47 @@ msgstr "" "# Generel (\"VPATH\"-variabel) søgesti:\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserverklient (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "ventende pÃ¥ semafor eller underproces: (Fejl %ld: %s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan ikke fortolke outputsynkroniseringsmutex %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ugyldig outputsynkroniseringsmutex: %s" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Kommando ikke fundet\n" @@ -2276,6 +2474,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 +2489,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 4d9301bd519c5cd73d71486b9592273152812d3f..67840b8d5395ae13218ad15b00b7c6cb5a062883 100644 GIT binary patch delta 20218 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

$`OQ*WVnt8K}WPrroTpiy#r0tp5JA3=~ z)Ej*+6SySd2Fe~MT^#-w`g=M!2Ulm1sF$u^u7>WL-j-FU((=C}7QK&laNmnQL z_wEuOq_UZ?8>U{}KUv+izg=v8pv;mjJA*uzn_~>n?A%R(XZ+J%L*hFR<7Z}k(XDJ1 zWo1Y-^l{WNn{4d4ua{G^6w5SF}kJ z8FFVM=N*~i&NXUCZk*0^CO!u=-)o_>sd9FVtIKJ)X9T{8+T>SAPnom%jPDr5SDAd8 z-n*P7hgm4rJWpJ6uKebg=Gq(M850fX3c^*={FZ@UgO%Xhitli)&fvc z!3bE$9VnmYm@=T^XF`3YB8t)n;dqzXi&xrfcZq$f#UQc}kZ(zpQ*K2>9l7zKntWhs z>)a5hj7V4=IZ&Yb92}r(4|aybRnftn%*gK@bS3Kcirc6jcc!W~Hz&7ebuo0ZT+ER= z0k37pXYYtDb1FA?_Fk?eekhQrorFQVcVfm39Tx)^Z&W*jfbmxWMrBpj3wE%nR6=K{O%@WN=-g8s12{0BHh)xBV9*| zI-1T<;w*K+kVn>5?)zo;W*=5rg;~Of>0@z)t~>VQrk?YQ0+$F)R})PZu{%HQ%$86O zDSzW*awjA+SktwKOn7o0s*IwbW~a}lX|~eJz@NE0O8n_8?99-w49-MVeY2~}lBiq{ zaSF=~RYv7UdrLjEIaR%SQ%TIsa1In{K9967)4;==t*6OaDL0HY_Qs*97y8D-)$ION zey94cKRffwh>SIL&5=%NKW7BlfyG;+t~}B$_ER~ThV1RoS-G1v$3BPSm@*xl@#CiZ z!Lx1v?ZJg#%Op@=$CzLybu?xVoN4E}%73o=+@p->I7hv-xw|U4xmQYjCb7>yEK&S# z0y&RWxU1wka?j11(qvFE0XJWdDdMaR7QfamK02U1C!;gFHMRX{O&h=CP^!f(=?Q+7 zdCOa)UDNRlwr_H$ib^WW+#I=Nci1%P>BUj@3>?W#=SZc79qXBF=vzWtFSJfiH%;ZK z%4366$Mvn%=wqG#L(Zp<4PsiM#Gf>&{y{1}203%!|&%T)7&usdkO3s#8aGY zy{X=~wbZ%9%)YHwZ9kOMaPMvBCA5)>WPGY$+`f2#z4*niOPr0p-qw)CK2tWBcO)mM ziN}ws507u+{>6V{W&bcYn`O~T*DU^@PV)te(XGe#eAVjC^40}d&|D$glC=KTLD`v(xc(*11t z`ZmZ}FvGR{4+j35x%>)V%hikOba(gEf>7u`+`zb(^;BK%?rooO&n~p-j%MQB g{fDr0b7o^9;`HPfhjEqI|0B+bzp!UBrX%D30?IAORR910 delta 14103 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 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, 2022. # # Vereinheitlichen: # ================= @@ -14,51 +15,51 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.2.1\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: 2016-06-20 15:03+0200\n" -"Last-Translator: Philipp Thomas \n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-26 00:56+0200\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\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:1107 msgid "" "\n" "# Directories\n" @@ -148,234 +152,257 @@ msgstr "" "\n" "# Verzeichnisse\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (Schlüssel %s, letzte Änderung %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Keine" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " Dateien, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "keine" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " Unmöglichkeiten" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " bisher." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, 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:411 +#, 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:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .INTERMEDIATE sein" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .SECONDARY sein" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE und .SECONDARY schließen sich gegenseitig aus" -#: src/file.c:872 +#: src/file.c:942 msgid "Current time" msgstr "Aktuelle Zeit" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Dies ist kein Ziel:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." -msgstr "# Kommandozeilen-Ziel (target)." +msgstr "# Kommandozeilen-Ziel." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Eingebaute Regel" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt." -#: src/file.c:1032 +#: src/file.c:1105 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:1107 #, 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:1109 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:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Die Datei ist eine Voraussetzung für .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Die Datei ist sekundär (Voraussetzung von .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Erzeugt außerdem:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Zeit der letzten Änderung wurde nicht überprüft." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Die Datei existiert nicht." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Datei ist sehr alt." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Zuletzt geändert %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Datei wurde aktualisiert." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Datei wurde nicht aktualisiert." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Erfolgreich aktualisiert." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Aktualisierung ist fehlgeschlagen." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Ungültiger Wert im „command_state“-Strukturelement!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -383,7 +410,7 @@ msgstr "" "\n" "# Dateien" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -393,124 +420,143 @@ msgstr "" "# Statistik der Hash-Tabelle für Dateien:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ außerhalb des Bereichs" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "Das erste Argument der Funktion „word“ ist ungültig" -#: src/function.c:799 +#: src/function.c:803 #, 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" - -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" -msgstr "Nicht-numerisches erstes Argument für die „wordlist“-Funktion" +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:1533 +#: 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "Datei: fehlender Dateiname" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "Öffnen: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "Schreiben: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" -msgstr "schließend: %s: %s" +msgstr "Schließen: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "Datei: zu viele Argumente" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "Lesen: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "Unzulässige Dateioperation: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“" -#: src/function.c:2483 +#: src/function.c:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Leerer Funktionsname" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Unzulässiger Funktionsname: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Der Funktionsname ist zu lang: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ungülte maximale Anzahl an Argumenten (%u) für die Funktion „%s“" @@ -573,165 +619,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:326 +#, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Nächster Versuch, jetzt hartnäckiger.\n" -#: src/implicit.c:490 +#: src/implicit.c:501 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Muster-Regel mit Wurzel „%.*s“ wird probiert.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Muster-Regel „%s“ mit Stamm „%.*s“ wird probiert.\n" -#: src/implicit.c:717 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Unmögliche Voraussetzung „%s“ für eine Regel wird abgelehnt.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamm zu lang: „%s%.*s“.\n" -#: src/implicit.c:718 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Unmögliche implizite Voraussetzung „%s“ wird abgelehnt.\n" +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:770 +#, 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:787 #, 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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 #, 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:834 #, c-format -msgid "Looking for a rule with intermediate file '%s'.\n" +msgid "Found '%s'.\n" +msgstr "„%s“ gefunden.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Verwendung der Kompatibilitätsregel „%s“ aufgrund von „%s“.\n" + +#: src/implicit.c:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden.\n" + +#: src/implicit.c:885 +#, 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:886 +#, 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:927 +#, 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:931 +#, 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:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Eine implizite Regel „%s“ für „%s“ wurde gefunden.\n" -#: src/job.c:548 +#: src/implicit.c:1151 +#, 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/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Keine implizite Regel für „%s“ gefunden.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Eine temporäre Datei kann nicht erzeugt werden" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (Speicherauszug erstellt)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignoriert)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, 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:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (entfernt)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -740,96 +849,95 @@ msgstr "" "\n" "%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token für den Kindprozess %p (%s) erhalten.\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: Archiv „%s“ existiert nicht" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "Ziel existiert nicht" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "Lasteinschränkung kann nicht erzwungen werden: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Temporäre Stapelverarbeitungsdatei %s wird erstellt\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -838,7 +946,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -847,7 +955,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +965,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:317 msgid "Options:\n" msgstr "Optionen:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Wird aus Kompatibilitätsgründen ignoriert\n" -#: src/main.c:338 +#: src/main.c:320 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:322 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:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Viele Informationen zur Fehlersuche ausgeben.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 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:332 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:334 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:337 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:339 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:341 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:344 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:346 +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:348 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:350 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:353 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:355 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:358 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:361 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:364 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:366 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:368 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:370 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:388 +#: src/main.c:372 +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:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1067,38 +1194,38 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k abschalten.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 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:386 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:388 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:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1106,36 +1233,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:395 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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "Schreibfehler: Standardausgabe" -#: src/main.c:671 +#: src/main.c:742 #, 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:834 #, 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:874 #, c-format msgid "unknown output-sync type '%s'" -msgstr "unbekannter Typ von Ausgabesynchronisierung „%s“" +msgstr "Unbekannter Typ von Ausgabesynchronisierung „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Aufruf: %s [Optionen] [Ziele] …\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Diese Programm wurde für %s gebaut\n" -#: src/main.c:849 +#: src/main.c:906 +#, 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:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Fehlermeldungen (auf Englisch) bitte an senden.\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1145,771 +1305,780 @@ 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:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (temporäre Datei): " + +#: src/main.c:1833 #, 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:1841 +#, 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:1930 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben." - -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" -msgstr "fopen (temporäre Datei)" +msgid "Makefile from standard input specified twice" +msgstr "Die Makedatei wurde zweimal über die Standardeingabe angegeben" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporäre Datei)" +#: src/main.c:1940 +#, 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:2095 +#, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jobserver-Controller %s wird verwendet\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Ausgabe-Synchronisierungs-Mutex %s wird verwendet\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Durchmisch-Modus aktiviert: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" -msgstr "Aktualisiere „make“-Steuerdateien...\n" +msgstr "Makedateien werden aktualisiert …\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: konnte nicht geladen werden" -#: src/main.c:2303 +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, 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:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Keine Ziele" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" -msgstr "Aktualisieren der Ziele...\n" +msgstr "Ziele werden aktualisiert …\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sGebaut für %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sGebaut für %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, 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:3692 #, 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:602 #, 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:605 +#, 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:613 +#, 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "Erzeugen der temporären Datei „%s“: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Kindprozess" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "Entfernen der temporären Datei „%s“: %s" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen der temporären Datei „%s“: %s" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "Schreibfehler: Standardausgabe" +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:475 msgid ". Stop.\n" msgstr ". Schluss.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Jobserver %s kann nicht geöffnet werden: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "Öffnen der Pipe für die Jobs" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 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:207 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:261 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver-Klient (fds %d,%d)\n" +msgid "invalid --jobserver-auth string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --jobserver-auth" -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "Initialisierung der Pipe für den Jobserver" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" -msgstr "Job-Server wird geschrieben" +msgstr "Schreiben zum Job-Server" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "" +msgstr "Jobserver ist heruntergefahren" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect der Jobs-Pipeline" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" -msgstr "Lese Pipe für die Jobs" +msgstr "Lesen der Pipe für die Jobs" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --sync-mutex" -#: src/read.c:181 +#: src/posixos.c:681 +#, 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:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" -msgstr "„make“-Steuerdatei „%s“ wird gelesen" +msgstr "Makedatei „%s“ wird gelesen" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (kein Standard-Ziel)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (Suchpfad)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" -msgstr " (macht nichts)" +msgstr " (Datei darf auch fehlen)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (keine ~-Auflösung)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "Rezept beginnt vor dem ersten Ziel" -#: src/read.c:1035 +#: src/read.c:1053 #, 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:1154 #, 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:1138 +#: src/read.c:1156 #, c-format msgid "missing separator" msgstr "Fehlender Trenner" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "Es fehlt ein Ziel-Muster" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "Mehrfache Ziel-Muster" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "Ziel-Muster enthält kein „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "Fehlendes „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "Leerer Variablenname" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "Überflüssiger Text nach einer „define“-Anweisung" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "Fehlendes „endef“, nicht abgeschlossenes „define“" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "Überflüssiger Text nach einer „endef“-Anweisung" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "Überflüssiger Text nach einer „%s“-Anweisung" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "Überflüssiges „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "Es ist nur ein „else“ pro Bedingung erlaubt" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Falsche Ziel-bezogene Variablendefinition" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT sollte keine Voraussetzungen haben" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT sollte keine Befehle haben" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "Implizite und statische Muster-Regeln wurden vermischt" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "Implizite und normale Regeln wurden vermischt" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 +#, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "„%s“ ist bereits aktuell." -#: src/remake.c:323 +#: src/remake.c:350 #, 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:416 #, 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:426 #, 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:452 #, 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:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Die Datei „%s“ wurde bereits betrachtet.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Die Datei „%s“ wird immer noch aktualisiert.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aktualisierung der Datei „%s“ beendet.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Die Datei „%s“ existiert nicht.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 #, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Zirkuläre Abhängigkeit %s <- %s wird nicht verwendet." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Fertig mit den Voraussetzungen für die Ziel-Datei „%s“.\n" +msgstr "Fertig mit den Voraussetzungen für die Zieldatei „%s“.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, 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:891 #, 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:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Der VPATH-Name „%s“ wird ignoriert.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Die Zieldatei „%s“ wurde erfolgreich aktualisiert.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2086,7 @@ msgstr "" "\n" "# Implizite Regeln" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1925,19 +2094,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 +2163,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 +2179,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 +2223,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 +2255,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 +2267,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 +2290,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 +2326,46 @@ msgstr "" "# Statistik für Hashtabelle:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatisch" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "Standard" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "Umgebung" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" -msgstr "Makefile" +msgstr "Makedatei" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "Umgebung per -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "Kommandozeile" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "„override“-Anweisung" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (aus „%s“, Zeile %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "" "# Hashtabellen-Statistik für Variablen:\n" "\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2199,7 +2373,7 @@ msgstr "" "\n" "# Variablen\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2207,7 +2381,7 @@ msgstr "" "\n" "# Musterspezifische Variablenwerte" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2215,7 +2389,7 @@ msgstr "" "\n" "# Keine musterspezifischen Variablenwerte." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2224,7 +2398,7 @@ msgstr "" "\n" "# %u musterspezifische Variablenwerte" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "Warnung: undefinierte Variable „%.*s“" @@ -2249,22 +2423,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2272,11 +2446,11 @@ msgstr "" "\n" "# VPATH-Suchpfade\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Keine „vpath“-Suchpfade." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2285,7 +2459,7 @@ msgstr "" "\n" "# %u „vpath“-Suchpfade.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2293,7 +2467,7 @@ msgstr "" "\n" "# Kein allgemeiner Suchpfad (Variable „VPATH“)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2303,245 +2477,71 @@ 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" +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)" msgstr "" "interner Fehler: die Semaphore „%s“ des Jobservers kann nicht geöffnet " -"werden:\n" -" (Fehler %ld: %s)" +"werden: (Fehler %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver-Klient (Semaphore %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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" - -#~ msgid "Redirected output to %s\n" -#~ msgstr "Ausgabe nach %s umgeleitet\n" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "Mutex zur Ausgabesynchronisierung „%s“ hat falsche Form: %s" -#~ msgid "Error spawning, %d\n" -#~ msgstr "Fehler %d beim Starten eines Kindprozesses\n" +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ungültiger Wert für Mutex für Ausgabesynchronisierung: %s" -#~ 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 9effe87e90a9a0a708005d239cc47192be3f2c29..4727bea4222d3e118bbdf69d0a69f4167236aa1f 100644 GIT binary patch delta 8682 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 diff --git a/po/es.po b/po/es.po index 359648b..63ebc1e 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -153,7 +158,7 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (llave %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " archivos, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1176 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:1180 msgid " so far." msgstr " hasta ahora." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, 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:411 #, c-format msgid "Removing intermediate files...\n" msgstr "*** Se borran los archivos intermedios...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 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:1094 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:1096 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:1098 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:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 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:1104 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:1105 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:1107 #, 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:1109 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:1111 +#, 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:1113 +#, 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:1117 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:1123 msgid "# Modification time never checked." msgstr "# La fecha de modificación no se comprobó." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# El archivo no existe." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# El archivo es muy viejo." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1078 +#: src/file.c:1155 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:1158 msgid "# Failed to be updated." msgstr "# Fallo al ser actualizado." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# ¡Valor inválido en el miembro 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -458,7 +505,7 @@ msgstr "" "\n" "# Archivos" -#: src/file.c:1109 +#: src/file.c:1186 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:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "archivo: falta el nombre del archivo" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" @@ -534,17 +604,17 @@ 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:2360 #, c-format msgid "write: %s: %s" msgstr "escribir: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "cerrar: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "archivo: demasiados argumentos" @@ -558,52 +628,52 @@ 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:2397 #, c-format msgid "read: %s: %s" msgstr "leer: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Nombre de función vacío" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Nombre de función no válido: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Nombre de función demasiado largo: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, 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" @@ -703,7 +773,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 +781,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 +801,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:326 +#, 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:451 #, 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 +819,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:501 +#, 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:506 +#, 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 +836,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:768 +#, 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 +848,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:770 +#, 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 +861,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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Intentando la regla de dependencia '%s'.\n" @@ -790,116 +873,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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando la dependencia implícita '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "El archivo '%s' no existe.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" + +#: src/implicit.c:1144 +#, 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:1151 +#, 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:1157 +#, 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:380 +#, 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:552 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:557 msgid " (ignored)" msgstr " (no tiene efecto)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, 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:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, 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:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -910,88 +1059,88 @@ msgstr "" # Proceso hijo em+ # Ok. -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: el objetivo '%s' no existe" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "No se puede restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Se crea el archivo temporal %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -1000,7 +1149,7 @@ msgstr "" "Contenido del archivo de lotes:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -1009,7 +1158,7 @@ msgstr "" "Contenido del archivo de lotes:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -1020,49 +1169,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:317 msgid "Options:\n" msgstr "Opciones:\n" # Lo mismo de arriba con "ignorar". sv # Ok. mm. -#: src/main.c:336 +#: src/main.c:318 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:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1073,7 +1232,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:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Se imprimirán grandes cantidades de información de depurado.\n" @@ -1081,14 +1240,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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1097,14 +1256,14 @@ msgstr "" " Las variables ambientales se imponen a las de los " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1112,7 +1271,7 @@ msgstr "" " -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n" " Lee al ARCHIVO como un makefile.\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Muestra este mensaje y finaliza.\n" @@ -1122,13 +1281,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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1139,7 +1298,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:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1148,16 +1307,20 @@ msgstr "" "especifica un\n" "argumento son infinitos.\n" +#: src/main.c:346 +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:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1167,7 +1330,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1175,7 +1338,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1185,7 +1348,7 @@ msgstr "" " No ejecuta ninguna instrucción; sólo las " "muestra.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1195,7 +1358,7 @@ msgstr "" " Supone que ARCHIVO es muy viejo y no lo " "reconstruye.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1206,13 +1369,13 @@ msgstr "" # de 'make' em+ # ok. mm -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1226,7 +1389,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:368 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 +1400,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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1266,7 +1435,7 @@ msgstr "" # # Pues entonces cámbialo arriba tambien em+ # En donde? mm -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Se tocan los objetivos en vez de " @@ -1275,20 +1444,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:384 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:386 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:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Muestra el directorio actual.\n" @@ -1297,7 +1466,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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1305,7 +1474,7 @@ msgstr "" " --no-print-directory Desactiva -w, aún cuando haya sido activado " "implícitamente.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1316,7 +1485,7 @@ msgstr "" # Lo mismo. sv # Todas estas parecen descripciones de opciones. -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1324,28 +1493,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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "error al escribir: stdout" + +#: src/main.c:742 #, 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:834 #, 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:874 #, 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:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa fue construido para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construido para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe sobre los errores a \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1360,29 +1576,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:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (archivo temporal)" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1390,53 +1610,65 @@ 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (archivo temporal)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reajustando al modo monotarea (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + # Antes pusiste "makefiles". Coherencia. sv # Cierto. mm -#: src/main.c:2190 +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando archivos makefiles....\n" @@ -1447,134 +1679,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:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: fallo al cargar" + # Lo mismo. sv -#: src/main.c:2303 +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, 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:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando los objetivos finales....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sEste programa fue construido para %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 +#, 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 +1791,7 @@ msgstr "" "%sNo existe GARANTÍA ALGUNA, hasta los límites permitidos por las leyes " "aplicables.\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1600,7 +1805,7 @@ msgstr "" # Porqué 'del', o pones 'del programa' Make o pones # 'de Make' em+ # Ok. mm -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1609,33 +1814,49 @@ msgstr "" "\n" "# Se termina la base de datos de Make en %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Se crea el archivo temporal %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acceso del Make" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (archivo temporal)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acceso del hijo" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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 +1870,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 +1884,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 +1908,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 +1922,137 @@ 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:280 #, c-format -msgid "write error: stdout" -msgstr "error al escribir: stdout" +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:475 msgid ". Stop.\n" msgstr ". Alto.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "creando una tubería de tareas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplicando una tubería de tareas" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "escribir en el servidor de tareas" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "servidor de tareas detenido" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "tubería de trabajos «pselect»" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "tubería de trabajos leídos" +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "error interno: cadena --jobserver-auth inválida '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Leyendo makefile '%s'" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (no hay objetivo por defecto)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (ruta de búsqueda)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (no importa)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (no hay expansión del ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "las instrucciones comenzaron antes del primer objetivo" @@ -1849,120 +2062,130 @@ 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:1053 #, c-format msgid "missing rule before recipe" msgstr "falta una regla antes de las instrucciones" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "falta un separador" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "falta un patrón de objetivos" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "hay varios patrones de objetivos" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "el patrón de objetivo no contiene '%%'" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "falta un 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nombre de variable vacío" -#: src/read.c:1478 +#: src/read.c:1423 #, 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:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "falta un 'endef', no se terminó un 'define'" -#: src/read.c:1531 +#: src/read.c:1476 #, 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:1548 #, 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:1549 #, c-format msgid "extraneous '%s'" msgstr "irrelevante o mal colocado '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "sólo se admite un 'else' por condicional" -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "los objetivos agrupados deben proporcionar instrucción" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, 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:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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 +2194,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:2186 #, 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:2189 #, 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:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" @@ -1994,32 +2217,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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "No se hace nada para '%s'." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' está actualizado." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Se poda el archivo '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" @@ -2027,7 +2259,7 @@ msgstr "" # Sugerencia: No hay ninguna regla... sv # Como una no hay ninguna. mm -#: src/remake.c:399 +#: src/remake.c:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s" @@ -2038,7 +2270,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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Se considera el archivo objetivo '%s'.\n" @@ -2049,32 +2281,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:459 #, 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:471 #, 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:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Se continúa actualizando el archivo '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Se terminó de actualizar el archivo '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "El archivo '%s' no existe.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -2082,26 +2314,19 @@ 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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Se elimina la dependencia circular %s <- %s." @@ -2109,73 +2334,73 @@ msgstr "Se elimina la dependencia circular %s <- %s." # 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:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Se terminaron las dependencias del archivo objetivo '%s'.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "No es necesario reconstruir el objetivo '%s'." -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; se usa el nombre del VPATH '%s'" @@ -2183,17 +2408,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:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Se debe reconstruir el objetivo '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Se ignora el nombre del VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Las instrucciones de '%s' se están ejecutando.\n" @@ -2201,41 +2426,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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "El elemento .LIBPATTERNS '%s' no es un patrón" @@ -2252,17 +2477,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 +2494,7 @@ msgstr "" "\n" "# Reglas implícitas." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -2278,7 +2502,7 @@ msgstr "" "\n" "# No hay reglas implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -2291,11 +2515,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" @@ -2565,44 +2794,44 @@ msgstr "" # Lo he cmabiado em+ # Ok. Deberíamos platicarlo con Ulrich. mm -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automática/o" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "por defecto" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "entorno" # Sugerencia: No poner archivo. sv # Ok. mm -#: src/variable.c:1662 +#: src/variable.c:1795 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:1798 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:1801 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:1804 msgid "'override' directive" msgstr "directiva 'override'" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (de '%s', línea %lu):" @@ -2612,11 +2841,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:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2624,7 +2853,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2632,7 +2861,7 @@ msgstr "" "\n" "# Valores de variables específicas al patrón" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2640,7 +2869,7 @@ msgstr "" "\n" "# No hay valores de variables específicas al patrón." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2651,7 +2880,7 @@ msgstr "" # ¿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 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "atención: la variable '%.*s' no ha sido definida" @@ -2676,26 +2905,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2705,13 +2934,13 @@ msgstr "" # Rutas creo que queda mejor. sv # Ok. Es más común. mm -#: src/vpath.c:620 +#: src/vpath.c:617 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:619 #, c-format msgid "" "\n" @@ -2720,7 +2949,7 @@ msgstr "" "\n" "# %u rutas de búsqueda 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2728,7 +2957,7 @@ msgstr "" "\n" "# No hay ruta de búsqueda general (variable 'VPATH')." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2738,17 +2967,17 @@ msgstr "" "# Ruta de búsqueda general (variable 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" @@ -2756,21 +2985,56 @@ 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:262 #, 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:310 #, 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:381 #, 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:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nombre de función no válido: %s" + +#~ 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" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»." + +#~ 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 1c367cdb4c4fd69d67a9d17567e9ec1fdffe0d32..c42628617c8170c58ca7008bca69c63429e3caf2 100644 GIT binary patch delta 8279 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 ZCN0EQ_591qTmGNB?8K=~bvA9B^S`24DrNux delta 9549 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, 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -134,226 +139,256 @@ msgstr "" "\n" "# Hakemistot\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (avain %s, maika %d: " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 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:1171 src/dir.c:1192 msgid " files, " msgstr " tiedostoa, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "ei" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " mahdottomuutta" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " tähän mennessä." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 +#, 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:277 #, 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:281 #, 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:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Poistetaan aputiedosto ”%s”" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Poistetaan aputiedostot...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Tämänhetkinen aika" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Ei kohde:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Valekohde (ennakkoehto .PHONY:lle)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Komentorivikohde." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Sisäänrakennettu sääntö" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Oletussääntöhaku on suoritettu." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Oletussääntöhakua ei ole suoritettu." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Tiedosto on välitason ennakkoehto." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Valekohde (ennakkoehto .PHONY:lle)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Tuotetaan myös:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Muutosaikaa ei koskaan tarkastettu." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Tiedosto ei ole olemassa." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Tiedosto on hyvin vanha." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Viimeksi muutettu %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Tiedosto on päivitetty." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Tiedostoa ei ole päivitetty." -#: src/file.c:1062 +#: src/file.c:1139 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1065 +#: src/file.c:1142 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Päivitetty onnistuneesti." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Vaatii päivitystä (-q on asetettu)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Päivitys epäonnistui." -#: src/file.c:1086 +#: src/file.c:1163 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Virheellinen arvo ”command_state”-jäsenessä!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -361,7 +396,7 @@ msgstr "" "\n" "# Tiedostot" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -371,124 +406,147 @@ msgstr "" "# tilasto tiedostojen hajautustaulusta:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "tiedosto: tiedostonimi puuttuu" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "tiedosto: liian monta argumenttia" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 -#, fuzzy, c-format +#: src/function.c:2409 +#, 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:2527 +#, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ei toteutettu tällä alustalla: funktio ”%s”" -#: src/function.c:2483 +#: src/function.c:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Tyhjä funktionimi" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Virheellinen funktionimi: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Funktionimi on liian pitkä: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s" @@ -556,7 +614,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 +622,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 +632,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:326 #, 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:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, 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:506 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Liian pitkä runko: ”%.*s”.\n" + +#: src/implicit.c:768 +#, 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:770 +#, 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:787 #, 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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Yritetään käyttää oletusennakkoehtoa ”%s”.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tiedosto ”%s” ei ole olemassa.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Etsitään sääntöä aputiedostolla ”%s”.\n" + +#: src/implicit.c:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Kohteelle ”%s” löytyi oletussääntö.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Etsitään oletussääntöä kohteelle ”%s”.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Väliaikaistiedoston luominen ei onnistu\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (muisti vedostettu)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ei huomioida)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Odotetaan keskeneräisiä töitä...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (etä)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/job.c:956 +#: src/job.c:972 #, 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:1083 #, 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:1146 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -713,91 +833,91 @@ msgstr "" "\n" "Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: kohde ”%s” ei ole olemassa" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Vakiovirhetulostetta ei voitu palauttaa\n" -#: src/job.c:2520 +#: src/job.c:2530 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ympäristötila saattaa olla lopussa" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Luodaan väliaikainen komentotiedosto %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -806,7 +926,7 @@ msgstr "" "Komentojonotiedoston sisältö:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -815,7 +935,7 @@ msgstr "" "Komentojonotiedoston sisältö:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +945,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:317 msgid "Options:\n" msgstr "Valitsimet:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -871,16 +1001,16 @@ msgstr "" " -C HAKEMISTO, --directory=HAKEMISTO\n" " Siirry HAKEMISTOon ennen jatkamista.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Näytä runsaasti vianetsintätietoja.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -889,12 +1019,13 @@ msgstr "" " Ympäristömuuttujat kumoavat makefile-" "tiedostot.\n" -#: src/main.c:350 +#: src/main.c:332 +#, 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -902,18 +1033,16 @@ msgstr "" " -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n" " Käytä TIEDOSTOa makefile-tiedostona.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,7 +1051,7 @@ msgstr "" " Etsi sisällytettäviä makefile:ja " "HAKEMISTOsta.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -930,14 +1059,18 @@ msgstr "" " -j [N], --jobs[=N] Salli N yhtäaikaista työtä; ilman N:ää " "ääretön.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1080,7 @@ msgstr "" " Älä aloita useita töitä ellei kuormitus alle " "N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1088,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:355 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -966,7 +1099,7 @@ msgstr "" " Näytä ajettavat komennot, älä käynnistä " "niitä.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,48 +1108,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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 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:366 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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 #, 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:377 #, 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1024,25 +1162,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Kumoaa valitsimen -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 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:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1050,7 +1187,7 @@ msgstr "" " --no-print-directory Kumoa -w, vaikka se olisi käytössä " "oletuksena.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1059,7 +1196,7 @@ msgstr "" "new=TIEDOSTO\n" " Käsittele TIEDOSTO aina uutena.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1067,27 +1204,61 @@ msgstr "" " --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n" " muuttujiin.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "kirjoitusvirhe: vakiotuloste" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "tuntematon vianetsintätason määritys ”%s”" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" + +#: src/main.c:904 +#, 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:906 +#, 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:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" + +#: src/main.c:940 #, 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:947 #, fuzzy, c-format msgid "" "\n" @@ -1102,27 +1273,31 @@ msgstr "" "Poikkeusliput = %x\n" "Poikkeusosoite = %x\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (väliaikaistiedosto): " + +#: src/main.c:1833 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1130,171 +1305,159 @@ 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (väliaikaistiedosto)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Palataan yhden työn (-j1) tilaan." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Päivitetään makefile-tiedostoja....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: lataaminen epäonnistui" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Makefile-tiedoston ”%s” uudelleentuottaminen epäonnistui." -#: src/main.c:2323 +#: src/main.c:2548 #, 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:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Ei kohteita" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2610 +#: src/main.c:2922 #, 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." - -#: 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" +"varoitus: Havaittu väärä kellonaika. Koonnos saattaa olla epätäydellinen." -#: src/main.c:2815 -#, c-format -msgid "Report bugs to \n" -msgstr "" -"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" - -#: src/main.c:2901 +#: src/main.c:3186 #, 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:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "valitsin ”-%c” vaatii positiivisen kokonaislukuargumentin" -#: src/main.c:3363 +#: src/main.c:3652 #, 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:3654 #, 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:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1303,7 +1466,7 @@ msgstr "" "\n" "# Make-tietokanta, tulostettu %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1312,385 +1475,414 @@ msgstr "" "\n" "# Make-tietokanta saatu valmiiksi %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Luodaan väliaikainen komentotiedosto %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (väliaikaistiedosto): " -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-prosessin käyttöoikeudet" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Lapsiprosessin käyttöoikeudet" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "kirjoitusvirhe: vakiotuloste" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Seis.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: src/output.h:62 -#, 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:186 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:190 msgid "creating jobs pipe" msgstr "luodaan työputki" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 #, fuzzy msgid "duping jobs pipe" msgstr "luodaan työputki" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "alustetaan työpalvelimen putki" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" msgstr "työpalvelimen kirjoitus" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 #, fuzzy msgid "pselect jobs pipe" msgstr "työputken luku" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "työputken luku" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono ”%s”" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Luetaan makefile-tiedosto ”%s”" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr "" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (hakupolku)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (ei välitetä)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (ei ~-laajennusta)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komennot alkavat ennen ensimmäistä kohdetta" -#: src/read.c:1035 +#: src/read.c:1053 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "puuttuva sääntö ennen komentoja" -#: src/read.c:1136 -#, fuzzy, c-format +#: src/read.c:1154 +#, 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:1138 +#: src/read.c:1156 #, c-format msgid "missing separator" msgstr "puuttuva erotin" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "puuttuva kohdehahmo" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "useita kohdehahmoja" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "kohdehahmo ei sisällä ”%%”-merkkiä" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "puuttuva ”endif”" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "tyhjä muuttujan nimi" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "ylimääräistä tekstiä ”endef”-toimintaohjeen jälkeen" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "puuttuva ”endef”, päättämätön ”define”" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "ylimääräistä tekstiä ”endef”-toimintaohjeen jälkeen" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "ylimääräistä tekstiä ”%s”-toimintaohjeen jälkeen" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "ylimääräinen ”%s”" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "vain yksi ”else” ehtolausetta kohden" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Väärin muotoiltu kohdekohtainen muuttujamäärittely" +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + # skripti? -#: src/read.c:1968 +#: src/read.c:2039 #, fuzzy, c-format msgid "prerequisites cannot be defined in recipes" msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Kohteelle ”%s” ei tarvitse tehdä mitään." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "”%s” on ajan tasalla." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Karsitaan tiedosto ”%s”.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Tarkastellaan kohdetiedostoa ”%s”.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Tiedostoa ”%s” on jo tarkasteltu.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Päivitetään edelleen tiedostoa ”%s”.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Tiedoston ”%s” päivitys valmistui.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Tiedosto ”%s” ei ole olemassa.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1698,147 +1890,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kehäriippuvuus %s <- %s hylätty." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Kohdetiedoston ”%s” ennakkoehdot täytetty.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Luovutaan kohdetiedostosta ”%s”.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Ei tarvetta uudelleentuottaa kohdetta ”%s”" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; käytetään VPATH-nimeä ”%s”" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Kohde ”%s” on tuotettava uudelleen.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ei huomioida VPATH-nimeä ”%s”.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Kohdetiedoston ”%s” uudelleentuottaminen epäonnistui.\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Kohdetiedosto ”%s” uudelleentuotettiin onnistuneesti.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Käytetään oletuskomentoja kohteelle ”%s”.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2032,7 @@ msgstr "" "\n" "# Oletussäännöt" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1854,20 +2040,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 +2262,44 @@ msgstr "" "# tilasto tiedostojen hajautustaulusta:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automaattinen" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "oletus" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "ympäristö" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "-e:n alainen ympäristö" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "komentorivi" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "”override”-toimintaohje" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (tiedosto ”%s”, rivi %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# muuttujajoukon hajautustaulutilastot:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2116,7 +2307,7 @@ msgstr "" "\n" "# Muuttujat\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2124,7 +2315,7 @@ msgstr "" "\n" "# Hahmokohtaisia muuttujien arvoja" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2132,7 +2323,7 @@ msgstr "" "\n" "# Ei hahmokohtaisia muuttuja-arvoja." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2141,15 +2332,15 @@ msgstr "" "\n" "# %u hahmokohtaista muuttuja-arvoa" -#: src/variable.h:229 +#: src/variable.h:237 #, 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 +2358,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2190,11 +2381,11 @@ msgstr "" "\n" "# VPATH-hakupolut\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Ei ”vpath”-hakupolkuja." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2203,7 +2394,7 @@ msgstr "" "\n" "# %u ”vpath”-hakupolkua.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2211,7 +2402,7 @@ msgstr "" "\n" "# Ei yleistä (”VPATH”-muuttuja) hakupolkua." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2221,37 +2412,67 @@ 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Virheellinen funktionimi: %s" + +#~ 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 71682caadcd1a513adfa79f2e35ab86e3eaa9394..3cb2e38340edb6854d1edcf261958509dff40af4 100644 GIT binary patch delta 10102 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 Hz>NO`w;j@K diff --git a/po/fr.po b/po/fr.po index 70d0349..4076a2e 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -144,226 +149,258 @@ msgstr "" "\n" "# Répertoires\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (clé %s, mtime %I64u) : " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Aucun" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " fichier(s), " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "aucune" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " impossibilité(s)" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " jusqu'ici." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Suppression du fichier intermédiaire « %s »" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Suppression des fichiers intermédiaires...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Heure actuelle" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Pas une cible :" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Fichier précieux (dépendance de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Cible factice (dépendance de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Cible de la ligne de commande." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Pas de règle interne" -#: src/file.c:1031 +#: src/file.c:1104 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:1105 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:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." msgstr "# Le fichier est une dépendance intermédiaire." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Fichier précieux (dépendance de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Cible factice (dépendance de .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Fabrique également :" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Heure de modification jamais vérifiée." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Le fichier n'existe pas." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Le fichier est très ancien." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Dernière modification %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Le fichier a été mis à jour." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Le fichier n'a pas été mis à jour." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Mise à jour réussie." -#: src/file.c:1078 +#: src/file.c:1155 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:1158 msgid "# Failed to be updated." msgstr "# N'a pas pu être mis à jour." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Valeur non valable dans le membre « command_state » !" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -371,7 +408,7 @@ msgstr "" "\n" "# Fichiers" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -381,124 +418,147 @@ msgstr "" "# stats des tables de hachage des fichiers :\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file : fichier manquant" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open : %s : %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write : %s : %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close : %s : %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file : trop d'arguments" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read : %s : %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Nom de fonction absent" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Nom de fonction invalide : %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Nom de fonction trop long : %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nombre d'arguments excessif (%u) pour la fonction %s" @@ -575,147 +635,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:326 #, 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:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, 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:506 #, 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:768 +#, 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:770 +#, 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:787 #, 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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Essai de la dépendance implicite « %s ».\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Le fichier « %s » n'existe pas.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1151 +#, 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:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossible de créer un fichier temporaire\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (core dump créé)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignorée)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attente des tâches non terminées...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (distant)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -724,93 +845,93 @@ msgstr "" "\n" "%d arguments comptés lors du lancement échoué\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s : la cible « %s » n'existe pas" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Impossible de restaurer stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" @@ -819,7 +940,7 @@ msgstr "" "Contenu du fichier de commande :\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -828,7 +949,7 @@ msgstr "" "Contenu du fichier Batch :%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -839,46 +960,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:317 msgid "Options:\n" msgstr "Options :\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoré pour compatibilité.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -887,19 +1018,19 @@ msgstr "" " Se placer dans le RÉPERTOIRE avant toute " "action.\n" -#: src/main.c:343 +#: src/main.c:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -908,15 +1039,14 @@ msgstr "" " Les variables d'environment sont prioritaires " "sur les makefiles.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -924,16 +1054,16 @@ msgstr "" " -f FICHIER, --file=FICHIER, --makefile=FICHIER\n" " Lire le FICHIER comme un makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -942,7 +1072,7 @@ msgstr "" " Chercher dans le RÉPERTOIRE les makefiles " "traités par inclusion.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -950,14 +1080,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -967,7 +1101,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -975,7 +1109,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -985,7 +1119,7 @@ msgstr "" " N'exécuter aucune recette ; seulement les " "afficher.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -995,7 +1129,7 @@ msgstr "" " Considérer le FICHIER comme étant très ancien " "et ne pas le refabriquer.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1004,12 +1138,12 @@ msgstr "" " Synchronise la sortie des tâches parallèles " "par TYPE.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1017,29 +1151,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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1047,28 +1186,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Désactiver -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Afficher les traces mémoire.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1076,7 +1215,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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1085,7 +1224,7 @@ msgstr "" " Considérer le FICHIER comme étant toujours " "nouveau.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1093,28 +1232,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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "erreur d'écriture : stdout" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "niveau de débogage inconnu « %s »" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "type de output-sync « %s » inconnu" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilisation : %s [options] [cible] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ce programme est construit pour %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ce programme est construit pour %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Signaler les anomalies à .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1129,28 +1301,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (fichier temporaire) : " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1158,169 +1334,159 @@ 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:1841 +#, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (fichier temporaire)" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2095 +#, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "On revient en mode monotâche (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "type de output-sync « %s » inconnu" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Mise à jour des makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s : %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s : echec du chargement" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Échec de refabrication du makefile « %s »." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Le makefile inclus « %s » est introuvable." -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Pas de cible" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Mise à jour des objectifs cibles....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruit pour %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruit pour %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1497,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:3682 #, c-format msgid "" "\n" @@ -1340,7 +1506,7 @@ msgstr "" "\n" "# Base de données de Make, imprimée le %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1349,383 +1515,413 @@ msgstr "" "\n" "# Base de données de Make terminée le %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s : %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Utilisation de la recette par défaut pour « %s ».\n" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Accès initialisé" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Création d'un fichier de commande temporaire %s\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Accès utilisateur" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (fichier temporaire) : " -#: src/misc.c:791 -msgid "Make access" -msgstr "Accès de Make" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Accès des fils" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "erreur d'écriture : stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Arrêt.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s : %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s : %s" - -#: src/output.h:62 -#, 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:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:190 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:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplication d'un tube pour les tâches" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "écriture vers le serveur de tâches" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "" +msgstr "le serveur de tâche est arrêté" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect du tube de tâches" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "lecture du tube des processus" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Lecture du makefile « %s »" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (pas d'objectif par défaut)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (chemin de recherche)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (peu importe)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (pas de remplacement du ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, 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:1053 #, c-format msgid "missing rule before recipe" msgstr "règle manquante avant la recette" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "séparateur manquant" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "motif de cible manquant" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "motifs de cible multiples" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "le motif de cible ne contient pas « %% »" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "« endif » manquant" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nom de variable vide" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "texte superflu après la directive « define »" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "« endef » manquant, « define » non terminé" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "texte superflu après la directive « endef »" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "texte superflu après la directive « %s »" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "« %s » superflu" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "un seul « else » par condition" -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "mélange de règles implicites et normales" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 +#, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "« %s » est à jour." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Élagage du fichier « %s ».\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Étude du fichier cible « %s ».\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, 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:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Mise à jour du fichier « %s » en cours.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, 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:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Le fichier « %s » n'existe pas.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1733,149 +1929,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dépendance circulaire %s <- %s abandonnée." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Abandon du fichier cible « %s ».\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Inutile de refabriquer la cible « %s »" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr " ; utilisation du nom VPATH « %s »" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Il faut refabriquer la cible « %s ».\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " On ignore le nom VPATH « %s ».\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2073,7 @@ msgstr "" "\n" "# Règles implicites" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1891,20 +2081,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 +2277,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 +2313,44 @@ msgstr "" "# stats des tables de hachage :\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatique" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "défaut" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "environnement" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "environnement avec l'option -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "ligne de commande" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "directive « override »" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (depuis « %s », ligne %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2163,7 +2358,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2171,15 +2366,15 @@ msgstr "" "\n" "# Valeurs de variable spécifiques au motif" -#: src/variable.c:1774 +#: src/variable.c:1906 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:1908 #, c-format msgid "" "\n" @@ -2188,7 +2383,7 @@ msgstr "" "\n" "# %u valeurs de variable spécifiques au motif" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "avertissement : variable « %.*s » indéfinie" @@ -2215,22 +2410,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2238,11 +2433,11 @@ msgstr "" "\n" "# Chemins de recherche VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Aucun chemin de recherche « vpath »." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2251,7 +2446,7 @@ msgstr "" "\n" "# %u chemins de recherche « vpath ».\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2259,7 +2454,7 @@ msgstr "" "\n" "# Aucun chemin de recherche général (variable « VPATH »)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2269,38 +2464,74 @@ msgstr "" "# Chemin de recherche général (variable « VPATH ») :\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, 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:310 #, 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:381 #, 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:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nom de fonction invalide : %s" + +#~ 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" + +#~ 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." + +#~ 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 c6dbd0f5b6b72db5213cfb90d793ee60dcaf4bfa..d0af64772d4cae35b629fa511d1cc8421e204329 100644 GIT binary patch delta 8414 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 H7qkBt@m4pq delta 12502 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 vrgq}B+Zx8s_n~AtniYS}r\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:1107 msgid "" "\n" "# Directories\n" @@ -134,221 +139,253 @@ msgstr "" "\n" "# Comhadlanna\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (eochair %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Níl" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " comhad, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "níl" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " rudaí neamhfhéideartha" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " go dtí seo." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Comhad idirmheánach '%s' á scriosadh" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Comhaid idirmheánacha á mbaint...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "An t-am anois" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Ní sprioc é:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Sprioc líne na n-orduithe." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Riail insuite" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Rinneadh cuardach ar rialacha intuigthe." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stoc patrúin intuigthe/statach: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Tá an comhad ina réamhriachtanas idirmheánach." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Déanann sé freisin:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Níor seiceáladh an t-am mionathraithe riamh." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Níl a leithéid de chomhad ann." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Tá an comhad an-aosta." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Athraithe %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Nuashonraíodh an comhad." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Níor nuashonraíodh an comhad." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# D'éirigh leis an nuashonrú." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Tá gá le nuashonrú (-q sainithe)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Theip ar an nuashonrú." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Luach neamhbhailí sa bhall 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -356,7 +393,7 @@ msgstr "" "\n" "# Comhaid" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -366,124 +403,147 @@ msgstr "" "# comhaid hais-tábla stait:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" + +#: 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:821 -msgid "non-numeric second argument to 'wordlist' function" +#: 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: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: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "comhad: ainm comhaid ar iarraidh" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "oscailt: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "scríobh: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "dúnadh: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "comhad: an iomarca argóintí" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "léamh: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Tá ainm na feidhme folamh" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Tá ainm na feidhme neamhbhailí: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Tá ainm na feidhme rófhada: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s" @@ -573,133 +633,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:326 #, 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:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, 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:506 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stoc rófhada: '%.*s'.\n" + +#: src/implicit.c:768 +#, 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:770 +#, 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:787 #, 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:788 #, 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:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Níl comhad '%s' ann.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/implicit.c:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1157 +#, 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:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Ní féidir comhad sealadach a chruthú\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (córdhumpa)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (rinneadh neamhshuim air)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (i gcéin)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" -#: src/job.c:956 +#: src/job.c:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -708,86 +829,86 @@ msgstr "" "\n" "%d argóint sa tosú teipthe\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: níl sprioc '%s' ann" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, 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:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Baisc-chomhad sealadach %s á chruthú\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -796,7 +917,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -805,7 +926,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -816,44 +937,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:317 msgid "Options:\n" msgstr "Roghanna:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,18 +992,18 @@ msgstr "" " -C COMHADLANN, --directory=COMHADLANN\n" " Téigh go COMHADLANN roimh dhéanamh aon rud.\n" -#: src/main.c:343 +#: src/main.c:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -880,14 +1011,14 @@ msgstr "" " -e, --environment-overrides\n" " Sáraíonn athróga timpeallachta makefileanna.\n" -#: src/main.c:350 +#: src/main.c:332 #, 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -895,15 +1026,15 @@ msgstr "" " -f COMHAD, --file=COMHAD, --makefile=COMHAD\n" " Léigh COMHAD mar makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -912,7 +1043,7 @@ msgstr "" " Cuardaigh i gCOMHADLANN ar makefileanna " "breise.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -920,14 +1051,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -937,7 +1072,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -946,7 +1081,7 @@ msgstr "" "nasc\n" " siombalach nó ar an sprioc.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -956,7 +1091,7 @@ msgstr "" " Ná rith aon oideas; taispeáin na orduithe " "amháin.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -966,7 +1101,7 @@ msgstr "" " Caith le COMHAD mar cheann cianaosta; ná " "hathdhéan é.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -975,12 +1110,12 @@ msgstr "" " Sioncronaigh aschur ó jabanna comhthreomhara " "de réir CINEÁL.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -988,27 +1123,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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 #, 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1016,27 +1157,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Múch -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1044,7 +1185,7 @@ msgstr "" " --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go " "hintuigthe.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1053,7 +1194,7 @@ msgstr "" " Caith le COMHAD mar cheann úrnua (go " "héigríoch).\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1061,27 +1202,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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "earráid scríofa: stdout" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "leibhéal dífhabhtaithe anaithnid '%s'" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "cineál anaithnid '%s' le haghaidh output-sync" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" + +#: src/main.c:904 +#, 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:906 +#, 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:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Seol tuairiscí fabhtanna chuig \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1096,27 +1270,31 @@ msgstr "" "BratachaEisceachta = %lx\n" "SeoladhEisceachta = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (comhad sealadach): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1124,160 +1302,150 @@ 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (comhad sealadach)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Makefileanna á nuashonrú....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: theip ar lódáil" + +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Níl aon sprioc ann" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Cinn sprice á nuashonrú....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, 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:3654 #, 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:3665 +#, 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 +1455,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:3682 #, c-format msgid "" "\n" @@ -1296,7 +1464,7 @@ msgstr "" "\n" "# Bunachar sonraí Make, priontáilte ar %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1305,533 +1473,557 @@ msgstr "" "\n" "# Críochnaíodh an bunachar sonraí Make seo ar %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Baisc-chomhad sealadach %s á chruthú\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Rochtain úsáideora" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (comhad sealadach): " -#: src/misc.c:791 -msgid "Make access" -msgstr "Rochtain make" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Rochtain mic" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "earráid scríofa: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "píopa na jabanna á chruthú" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "píopa na jabanna á chóipeáil" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "scríobh jabfhreastalaí" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect píopa na jabanna" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "léadh píopa na jabanna" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Makefile '%s' á léamh" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (gan ceann sprice réamhshocraithe)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (conair chuardaigh)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (is cuma)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (ná leathnaigh ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, 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:1053 #, c-format msgid "missing rule before recipe" msgstr "riail ar iarraidh roimh an oideas" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "deighilteoir ar iarraidh" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "patrún sprice ar iarraidh" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "ilphatrúin sprice" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "níl aon '%%' sa phatrún sprice" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "'endif' ar iarraidh" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "ainm folamh athróige" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "téacs breise i ndiaidh treorach 'define'" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef' ar iarraidh, 'define' gan chríochnú" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "téacs breise i ndiaidh treorach 'endef'" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "téacs breise i ndiaidh treorach '%s'" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "'%s' breise" -#: src/read.c:1632 +#: src/read.c:1577 #, 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:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, 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:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "Tá '%s' cothrom le dáta." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Comhad '%s' á bhearradh.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Comhad sprice '%s' á scrúdú.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, 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:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Comhad '%s' á nuashonrú fós.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Nuashonraíodh comhad '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Níl comhad '%s' ann.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Tréigeadh an spleáchas ciorclach %s <- %s." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Comhad sprice '%s' á thréigean.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; ag baint úsáid as ainm VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Caithfidh an sprioc '%s' a athdhéanamh.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, 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:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Oideas le haghaidh '%s' á rith.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2031,7 @@ msgstr "" "\n" "# Rialacha Intuigthe" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1847,7 +2039,7 @@ msgstr "" "\n" "# Níl aon riail intuigthe." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1856,11 +2048,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 +2271,44 @@ msgstr "" "# staitisticí an hais-tábla:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "uathoibríoch" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "réamhshocraithe" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "timpeallacht" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "timpeallacht le -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "líne na n-orduithe" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "treoir 'override'" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (ó '%s', líne %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# athróg tacar hais-tábla stait:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2119,7 +2316,7 @@ msgstr "" "\n" "# Athróga\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2127,7 +2324,7 @@ msgstr "" "\n" "# Luachanna Athróige sainiúil don phatrún" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2135,7 +2332,7 @@ msgstr "" "\n" "# Níl aon luach athróige atá sainiúil don phatrún." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2144,7 +2341,7 @@ msgstr "" "\n" "# %u luach athróige atá sainiúil don phatrún" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "rabhadh: athróg gan sainmhíniú '%.*s'" @@ -2170,22 +2367,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2193,11 +2390,11 @@ msgstr "" "\n" "# VPATH Conairí Cuardaigh\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Níl aon chonair chuardaigh 'vpath' ann." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2206,7 +2403,7 @@ msgstr "" "\n" "# %u conair chuardaigh 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2214,7 +2411,7 @@ msgstr "" "\n" "# Níl aon chonair ghinearálta chuardaigh (athróg 'VPATH') ann." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2224,17 +2421,17 @@ msgstr "" "# Conair ghinearálta chuardaigh (athróg 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" @@ -2242,21 +2439,31 @@ 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:262 #, 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:310 #, 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:381 #, 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:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tá ainm na feidhme neamhbhailí: %s" + #~ msgid "%s: %s: Command not found\n" #~ msgstr "%s: %s: Ordú gan aimsiú\n" @@ -2266,6 +2473,9 @@ msgstr "séamafóir nó feitheamh le macphróiseas: (Earráid %ld: %s)" #~ 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." + #~ msgid "%s is suspending for 30 seconds..." #~ msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..." @@ -2275,6 +2485,27 @@ msgstr "séamafóir nó feitheamh le macphróiseas: (Earráid %ld: %s)" #~ msgid "Unknown error %d" #~ msgstr "Earráid anaithnid %d" +#~ 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" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliant jabfhreastalaí (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "píblíne an jabfhreastalaí" + #~ 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 5f703eeb19b22fb5bfc7f40336576d2498405102..5fa3c55f0052b3fb2cef2431e55b12c97d093e01 100644 GIT binary patch delta 4444 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 diff --git a/po/gl.po b/po/gl.po index 52b0ede..7d2e415 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -140,224 +145,254 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (clave %s, mtime %d): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Non" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "non" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " imposíbeis" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " ata aquí." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:281 #, 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:284 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:304 #, 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:310 #, 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:407 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminando o ficheiro intermedio «%s»" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Retirando os ficheiros intermedios...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Non é un obxectivo:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obxectivo falso (prerrequisito de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Obxectivo da liña de ordes." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Non hai regras implícitas." -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Fíxose a busca de regras implícitas." -#: src/file.c:1032 +#: src/file.c:1105 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:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é un prerrequisito intermedio." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obxectivo falso (prerrequisito de .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Tamén se fai:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Nunca se comprobou o tempo de modificación." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# O ficheiro non existe." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# O ficheiro é moi antigo." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación: %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# O ficheiro non foi actualizado." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Ten que ser actualizado (-q está definido)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Produciuse un erro ao actualizar." -#: src/file.c:1086 +#: src/file.c:1163 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Valor non válido no membro «command_state»!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -365,7 +400,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -375,128 +410,148 @@ msgstr "" "# estatísticas da táboa hash de ficheiros:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, fuzzy, c-format msgid "write: %s: %s" msgstr "erro de escritura: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: opción incorrecta -- %c\n" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" @@ -586,134 +641,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:326 +#, 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:451 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:501 #, 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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 #, 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:770 #, 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:787 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Probando o prerrequisito «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando o prerrequisito implícito «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:827 #, fuzzy, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro «%s» non existe.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, fuzzy, c-format +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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Non se atopou unha regra implícita para «%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Atopouse unha regra implícita de «%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Buscando unha regra implícita para «%s».\n" + +#: src/implicit.c:1157 +#, 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:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Non foi posíbel crear un ficheiro temporal\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (memoria envorcada)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 #, fuzzy msgid "" msgstr " (incorporadas):" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Agardando por traballos non rematados...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -722,101 +838,101 @@ msgstr "" "\n" "Contáronse %d argumentos no inicio que fallou\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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 -#, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "touch: O arquivo «%s» non existe" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# O ficheiro non existe." + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "non é posíbel impoñer un límite de carga: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -828,45 +944,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:317 msgid "Options:\n" msgstr "Opcións:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado por compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -874,19 +1000,19 @@ msgstr "" " -C DIRECTORIO, --directory=DIRECTORIO\n" " Cambiar ao DIRECTORIO antes de facer nada.\n" -#: src/main.c:343 +#: src/main.c:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -895,12 +1021,12 @@ msgstr "" " As variábei de ambiente substitúen aos " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -908,15 +1034,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " Ler o FICHEIRO como makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -925,7 +1051,7 @@ msgstr "" " Buscar os makefiles incluídos\n" " no DIRECTORIO.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -933,14 +1059,18 @@ msgstr "" " -j [N], --jobs[=N] Permitir N traballos á vez; infinitos sen\n" " un argumento.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -950,13 +1080,13 @@ msgstr "" " Non iniciar varios traballos con carga\n" " superior a N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:355 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -966,7 +1096,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Non executar ningún comando; só amosalos.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -976,43 +1106,49 @@ msgstr "" " Tratar o FICHEIRO como moi antigo e non " "refacelo.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1020,28 +1156,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desactiva -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -d Mostrar moita información de depuración.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1049,7 +1185,7 @@ msgstr "" " --no-print-directory Desactivar -w, incluso se se activou\n" " implicitamente.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1058,7 +1194,7 @@ msgstr "" "new=FICHEIRO\n" " Tratar o FICHEIRO como infinitamente novo.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1066,28 +1202,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:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "erro de escritura: %s" + +#: src/main.c:742 #, 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:834 #, 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:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opcións] [obxectivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa compilou para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa compilou para %s (%s)\n" + +#: src/main.c:909 +#, 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:940 #, 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:947 #, c-format msgid "" "\n" @@ -1102,27 +1273,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (ficheiro temporal)" + +#: src/main.c:1833 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1130,166 +1305,154 @@ msgstr "" "aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " "regra do make pai." -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporal)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando os ficheiros de make....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Non hai obxectivos" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando os obxectivos meta....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1462,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:3682 #, c-format msgid "" "\n" @@ -1308,7 +1471,7 @@ msgstr "" "\n" "# Base de datos de Make, imprimida en %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1317,384 +1480,413 @@ msgstr "" "\n" "# Base de datos de Make rematada en %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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" +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Usando as ordes por defecto para «%s».\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Acceso de usuario" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creando un ficheiro por lotes temporal %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acceso de make" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (ficheiro temporal)" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acceso de fillo" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" -#: src/output.c:97 +#: 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Detido.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "creando a canalización de traballos" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 #, fuzzy msgid "duping jobs pipe" msgstr "creando a canalización de traballos" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "inicializar a canalización do servidor de traballos" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 #, fuzzy msgid "pselect jobs pipe" msgstr "lectura da canalización de traballos" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "lectura da canalización de traballos" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Lendo o ficheiro de make «%s»" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (non hai unha meta por defecto)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (ruta de busca)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (non importa)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (non hai expansión de ~)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, fuzzy, c-format msgid "missing separator" msgstr "falta un separador%s" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "falta un patrón obxectivo" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "patróns de obxectivo múltiples" -#: src/read.c:1289 +#: src/read.c:1306 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "o patrón obxectivo non contén «%%»" -#: src/read.c:1404 +#: src/read.c:1349 #, fuzzy, c-format msgid "missing 'endif'" msgstr "falta «endif»" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nome de variábel baleiro" -#: src/read.c:1478 +#: src/read.c:1423 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "texto superfluo trala directiva «define»" -#: src/read.c:1503 +#: src/read.c:1448 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "falta «endef», «define» sen rematar" -#: src/read.c:1531 +#: src/read.c:1476 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "Texto superfluo trala directiva «endef»" -#: src/read.c:1603 +#: src/read.c:1548 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "Texto superfluo trala directiva «%s»" -#: src/read.c:1604 +#: src/read.c:1549 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "«%s» superfluo" -#: src/read.c:1632 +#: src/read.c:1577 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr "só un «else» por condicional" -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "regras implícitas e normais mesturadas" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2308 #, 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:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, 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:255 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "«%s» está actualizado." -#: src/remake.c:323 +#: src/remake.c:350 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Podando o ficheiro «%s».\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr "Considerando o ficheiro obxectivo «%s».\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, 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:481 #, 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:484 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Rematouse de actualizar o ficheiro «%s».\n" -#: src/remake.c:486 +#: src/remake.c:513 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "O ficheiro «%s» non existe.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, fuzzy, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1702,147 +1894,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 -#, 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 +#: src/remake.c:538 #, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "A dependencia circular %s <- %s foi eliminada." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:857 #, 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:865 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "Non é preciso refacer o obxectivo «%s»" -#: src/remake.c:804 +#: src/remake.c:867 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr "; usando o nome de VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:891 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "Debe refacerse o obxectivo «%s».\n" -#: src/remake.c:830 +#: src/remake.c:897 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ignorando o nome VPATH «%s».\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2036,7 @@ msgstr "" "\n" "# Regras implícitas" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1858,7 +2044,7 @@ msgstr "" "\n" "# Non hai regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1867,11 +2053,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 +2268,45 @@ msgstr "" "# estatísticas da táboa hash de ficheiros:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "por defecto" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "ficheiro de make" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "ambiente baixo -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "liña de ordes" -#: src/variable.c:1671 +#: src/variable.c:1804 #, fuzzy msgid "'override' directive" msgstr "directiva «override»" -#: src/variable.c:1682 +#: src/variable.c:1814 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (desde «%s», liña %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2123,7 +2314,7 @@ msgstr "" "\n" "# Variábeis\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2131,7 +2322,7 @@ msgstr "" "\n" "# Valores de variábeis específicas do patrón" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2139,7 +2330,7 @@ msgstr "" "\n" "# Non hai valores específicos do patrón." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2148,7 +2339,7 @@ msgstr "" "\n" "# %u valores de variábeis específicos do patrón" -#: src/variable.h:229 +#: src/variable.h:237 #, fuzzy, c-format msgid "warning: undefined variable '%.*s'" msgstr "aviso: variábel non definida «%.*s»" @@ -2173,22 +2364,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2196,12 +2387,12 @@ msgstr "" "\n" "# Rutas de busca VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# Non hai rutas de busca «vpath»" -#: src/vpath.c:622 +#: src/vpath.c:619 #, fuzzy, c-format msgid "" "\n" @@ -2210,7 +2401,7 @@ msgstr "" "\n" "# %u rutas de busca «vpath».\n" -#: src/vpath.c:625 +#: src/vpath.c:622 #, fuzzy msgid "" "\n" @@ -2219,7 +2410,7 @@ msgstr "" "\n" "# Non hai unha ruta de busca xeral (variábel «VPATH»)." -#: src/vpath.c:631 +#: src/vpath.c:628 #, fuzzy msgid "" "\n" @@ -2230,37 +2421,47 @@ 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, 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»!" @@ -2297,6 +2498,21 @@ msgstr "" #~ msgid "virtual memory exhausted" #~ msgstr "memoria virtual esgotada" +#~ 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" diff --git a/po/he.gmo b/po/he.gmo index 2ec63ad57db0fa58fed19389cea92356a6a3cb61..fb73f0a09232ee3383c7da5651ac834efadc86e3 100644 GIT binary patch delta 3003 zcmYk-YfzL`9LMqhx?EPU2*MCeUGM^nS}ER00Rs|{2=N|LDWnys34w(vPofrY))`}( zal8!OwHM7~>m_H(X3BbzZ%n4qMq_;GFht|XoEh{F%!c$**tDcC6^OFV>%9@X6)zJ^Dqx}el1SJCg&jx(f$VK;7!zxl1S5Z zoQ4Hhfm5&x^YLSxgui17_qRJ#3em^#XJIjFgw4)_r~&mN*|lF#1G$Pt_zx;03rJ5Q z7Nh!=BV)4F$SthFoo_|;??g{2>83(f?IWClU*S~jL(Swa>VgTZgVsD7)xQii&{`yE z){I(;4%A-gLS^I#DpRLj`vxY^9!?|w`k@g{=)%CGW_&EwIRka$0@MYiI0jc>5>}&@ zXalO>eq4xQ)POFbCU_Ou*EWC}*x#rO#;22ibquk<8o(k{3YQ^cvI^JUh-BFsk!!6D z`B*mx4devshfkq4?M2j$|3E%=hl4VgKqvLfbryN9vIezQO{kf4pf<^V%*S3-rut9= zyM-F)UDOYcpawRXXHIKB7j@%8)cI978MmS)dI0&D7v`w7{tWfpUP7(eAS%`IOhW?; z;B3rr?K0HbuSQ+J9kq$WI2SLYHr>Ct!$+3+QElQqT%_}#A_MU(LPaz94ujZ_Ovdh` z1~i_0G8QXDE!7$fVgp9k9Q9%eqcZe0>T&xX)&C~)u>lUsTs&!IKidQh==sm1q8a8# zPneaU*1F2I>)rQTP?>2%CS_q{jP^MywLf4k{)tL`0e@f>QYuA%zh zLr!{QZJ5z$A{qs=g z=LgBZ9-kUcXpQSoYu19=r5Kx-MP;xKHGu}# zZb$8{y{G{m@~CK2e1givdDQOz(RH|vy73^YUmQC}1I8sb3;Ec$9JJ~B(T8skv2uXQlddrj*ApE?D^W&t z60x$Fie5}At4Fan_525El)4kkQ5!@>X|5qO`%0pL*g(`08sI8IMYC3Ufq0$Rq6Xy| zLK$lziit*IC$W^MBUB2wza1p>IP50&5bqONgdWMwL>mz+IaKNirC1wPseFlen%GJx zlPdXyHrg6BC`F^#tGL$H^-}WUIP4&_nUv-!gw`omw0YWN4SbH^ePip0cL;4x?U!AI zHk`@|f@O}D7dbxf>g-{Air7SGvr|0V%dtFKH+vbYhQVm1*g&r%5y z`v^UX6@-c&L%l0rA>JlprJ2e$qLA26_=%}n{|8G6jg=3aSVDax(d5o;$7KX>=xEUs z5-V>}dCfIuq5fpX5Q#)Lp`zRAsR$4=i0GHq*wZ`lcI3*qk+`0r)GLvJv>acgI6dHx c?8=xuw&!B-T;zkSOkd<$cDz55JoC8kf4k`Z?f?J) delta 3447 zcmb8wYiv|S7{>7_lp<8Qlv@#@Q|`U0peUAdRiHpY6a)pSOS=mP%5Gh@7gSuVTm*#( zh!_otK_f=Qg!BU%5Y)tg7~~5EgQ8VhWRtQ~ytJ+w{XgxHknqWqzUMbHXU?9PcjlbN zXYQL5{XQ*um*Ln-+(xWVHs%;M-NcFGQmQe-F^1i-$IZs*lEqBSLW?u850>Kyti`_g z9^QhV;$S?DUGQpqJ!<}@z@N#WS2xT>-B7^kRxH9aEW@5yjrxJjsQx=q1KNu{aKEb` zao0b`blT5gKfH|nu@g5BG*KQ*VI&QO*c$_=89$BLxYxCx!Xeaua;A`uEb7^qhx1Sm zs>PxB29Cu~a1bVNH1=nd1F#so^L*n`D8x0GgNINfyx{x?HK2Y>pH(p9Q3IKQ<1vWJ z$N}t(hfw{Fp;G=OGG-G;#$f(&*KZ-MQQg>|f>JXCwG;(745woT22nHGhU#C38tBKU zJrG0Pm)fg+;OR(~%_!8;OhoOCB2(SdCe#45 zPU_zkmHM980ViNroQzt!VpRVc9D}u}fqjIU@bTW{pABz*pg|*SK&3X}Iu4>y1Ib0D z_HJadrqIHL$Ny1HFX$-DcFl(s-)&#BkJuM3VQd>a$P-&Ba_SaP{S=&0LMTe>-ZkAH+L(zPUm{yE2nr z!6X_{yZue_rS{{fft*Fns2(kLAPvgY5Y&Liq6X?it#J)n+=$BDKGfTA5S6hrI7sjR zj}&x+K7ahS>4r*W7V@T;ai{^zM$K@6s|QePA9D3|?)qkAPUbZvN#-Cb17DyrdjUsc z5*6(~lTAT0o`Bl50bRiDsLl9}^CV_bkE3>dI$sq%Xe#RUEWxq39{DpzIcblaN9JgH zl7D414~wu6qhly+qM!~((c(Ge&-}$nHw>Ursn0?6FGi(wJ!-RULv5~CQNObnm8qks z`%j^+pGVynLuKYyOa8SMsr0)1$DzI-^9M)UH^X8YbfbrQ3&PHgr~$l=y5Viqmv29Iz_Y09=TJ-7 zfcIc3>!$h?)WBAtW?X~%-n@(&_^v1gOW}P~$5W_*e2YqL18OEsuKq7-({*OSHPCd_ zUdcseWD@GFnB}f7MLoC*)o&YWU~i%NMNhgyz4H&$+TF}Q0L^RwYH5Zc&o+}#OXf!n zEQ}iH2DG@VY$GBnDCacB4}N z9;)8~ybF)G`Y)*0O&a+0~S1xvLcDBLu+jgcZnx%ICgG88^Ok96xe`FF7VkJ>U%p?{N zI`pyf6E6_T%(H}!mxw8ZN3cIlEphFLcBFK_t7)AV6S=NFAGL<-2(6v=gARRUs)_Lg z*)~rRFA}Q=rB+7@QP@_}BDXI^25xX|WM9h`HM1zpCGH@m5jvhAmJ#<5I+hZA#LPtE zUgCCQA#od_UC%#~wqqXW3B*)lV_VCOCw)hrCwdcGHMA`h9w)T&pL_=9$2#J{Q{6!wMJSlypx0@YzJ;=iH2Zf@VaE(7utf3`OM z7SD?%ntrqmv0qvnTUz7xYID3Skr8{Qt2I-IMemjE$v< diff --git a/po/he.po b/po/he.po index bee859a..4743ec0 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -135,229 +140,259 @@ msgstr "" "\n" "# Directories\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %d): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " files, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " impossibilities" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " so far." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá" -#: src/file.c:283 +#: src/file.c:277 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô" -#: src/file.c:287 +#: src/file.c:281 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå" -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì" -#: src/file.c:316 +#: src/file.c:310 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì" -#: src/file.c:408 +#: src/file.c:407 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" -#: src/file.c:412 +#: src/file.c:411 #, fuzzy, c-format msgid "Removing intermediate files...\n" msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "úëøòî ïåòù" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Not a target:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Precious file (prerequisite of .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (prerequisite of .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 #, fuzzy msgid "# Command line target." msgstr "# Command-line target." -#: src/file.c:1027 +#: src/file.c:1100 #, fuzzy msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A default or MAKEFILES makefile." -#: src/file.c:1029 +#: src/file.c:1102 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# No implicit rules." -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Implicit rule search has been done." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Implicit rule search has not been done." -#: src/file.c:1034 +#: src/file.c:1107 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/static pattern stem: `%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# File is an intermediate prerequisite." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Precious file (prerequisite of .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (prerequisite of .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Also makes:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Modification time never checked." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# File does not exist." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# File is very old." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Last modified %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# File has been updated." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# File has not been updated." -#: src/file.c:1062 +#: src/file.c:1139 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Commands currently running (THIS IS A BUG)." -#: src/file.c:1065 +#: src/file.c:1142 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Dependencies commands running (THIS IS A BUG)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Successfully updated." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Needs to be updated (-q is set)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Failed to be updated." -#: src/file.c:1086 +#: src/file.c:1163 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Invalid value in `command_state' member!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -365,134 +400,154 @@ msgstr "" "\n" "# Files" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1196 #, 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 "non-numeric second argument to 'wordlist' function" +msgid "invalid second argument to 'wordlist' function" msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà" -#: src/function.c:1533 +#: 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2290 +#: src/function.c:2409 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô" -#: src/function.c:2483 +#: src/function.c:2608 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" -#: src/function.c:2677 +#: src/function.c:2801 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" @@ -582,136 +637,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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n" -#: src/implicit.c:484 +#: src/implicit.c:451 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:501 #, 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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 #, 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:770 #, 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:787 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr ".`%s' íã÷ úùéøã ììë äñðî\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr ".íéé÷ åðéà `%s' õáå÷\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 #, 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 ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n" -#: src/implicit.c:786 +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" + +#: src/implicit.c:886 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" -#: src/job.c:370 +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" + +#: src/job.c:380 #, 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:552 msgid " (core dumped)" msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)" -#: src/job.c:553 +#: src/job.c:557 #, fuzzy msgid " (ignored)" msgstr "[%s] %d äì÷úî éúîìòúä" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 #, fuzzy msgid "" msgstr " (built-in):" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr "(ú÷çåøî)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" -#: src/job.c:956 +#: src/job.c:972 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -720,100 +835,100 @@ msgstr "" "\n" "ìùëðù øåâéùá åðîð íéèðîåâøà %d\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, fuzzy, c-format msgid "Obtained token for child %p (%s).\n" msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n" -#: src/job.c:1902 -#, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch" - -#: src/job.c:1905 +#: src/job.c:1909 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî" -#: src/job.c:2108 +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# File does not exist." + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "cannot enforce load limit: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "`%s' éðîæ batch õáå÷ øöåé\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -824,236 +939,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:317 msgid "Options:\n" msgstr " :íéðééôàî\n" -#: src/main.c:336 +#: src/main.c:318 #, fuzzy msgid " -b, -m Ignored for compatibility.\n" msgstr "úåîéàú ïòîì èîùåî" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:325 #, fuzzy msgid " -d Print lots of debugging information.\n" msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä" -#: src/main.c:345 +#: src/main.c:327 #, fuzzy msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:337 #, fuzzy msgid " -h, --help Print this message and exit.\n" msgstr "úéðëúäî àöå äæ äøæò êñî âöä" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:344 #, 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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 #, fuzzy msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä" -#: src/main.c:366 +#: src/main.c:350 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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:355 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:358 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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 #, fuzzy msgid " -p, --print-data-base Print make's internal database.\n" msgstr "Make ìù éîéðô íéðåúð ñéñá âöä" -#: src/main.c:382 +#: src/main.c:366 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà" -#: src/main.c:384 +#: src/main.c:368 #, fuzzy msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð" -#: src/main.c:386 +#: src/main.c:370 #, fuzzy msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð" -#: src/main.c:388 +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:382 #, fuzzy msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:386 #, fuzzy msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä" -#: src/main.c:401 +#: src/main.c:388 #, fuzzy msgid " -w, --print-directory Print the current directory.\n" msgstr "úéçëåð äé÷éú íù âöä" -#: src/main.c:403 +#: src/main.c:390 #, 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:392 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:395 #, fuzzy msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî" -#: src/main.c:754 +#: src/main.c:834 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "%s [íéðééôàî] [äøèî] ... :ùåîéù ïôåà\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, fuzzy, c-format +msgid "Report bugs to \n" +msgstr "" +"\n" +".-ì äì÷ú éçååéã çåìùì àð\n" + +#: src/main.c:940 #, 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:947 #, fuzzy, c-format msgid "" "\n" @@ -1068,191 +1234,187 @@ msgstr "" "ExceptionFlags = %x\n" "ExceptionAddress = %x\n" -#: src/main.c:864 +#: src/main.c:955 #, fuzzy, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (temporary file): " + +#: src/main.c:1833 #, 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (temporary file)" -#: src/main.c:2004 +#: src/main.c:2095 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô" -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "...makefile éöá÷ ïëãòî\n" -#: src/main.c:2226 +#: src/main.c:2397 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú" -#: src/main.c:2323 +#: src/main.c:2548 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr ".àöîð àì `%s' ììëåî makefile" -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì" -#: src/main.c:2402 +#: src/main.c:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "úåøèî ïéà" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "...ãòé úåøèî ïëãòî\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" -#: src/main.c:2965 +#: src/main.c:3267 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1261,7 +1423,7 @@ msgstr "" "\n" "# Make data base, printed on %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1270,532 +1432,554 @@ msgstr "" "\n" "# Finished Make data base on %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 #, 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" +msgid "using default temporary directory '%s'" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" -#: src/misc.c:664 -#, fuzzy -msgid "Initialized access" -msgstr "Initialized" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "`%s' éðîæ batch õáå÷ øöåé\n" -#: src/misc.c:743 -msgid "User access" -msgstr "" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (temporary file): " -#: src/misc.c:791 -msgid "Make access" -msgstr "" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (temporary file)" -#: src/misc.c:825 -msgid "Child access" -msgstr "" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (temporary file)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" +msgid "Cannot open jobserver %s: %s" msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "creating jobs pipe" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 #, fuzzy msgid "duping jobs pipe" msgstr "creating jobs pipe" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "init jobserver pipe" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" msgstr "write jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 #, fuzzy msgid "pselect jobs pipe" msgstr "read jobs pipe" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "read jobs pipe" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Reading makefile `%s'" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (no default goal)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (search path)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (don't care)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (no ~ expansion)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô" -#: src/read.c:1035 +#: src/read.c:1053 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "ïäéðôì ììë àìì úåãå÷ô" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, fuzzy, c-format msgid "missing separator" msgstr "%sãéøôî øñç" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "äøèî úéðáú ïéà" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "úåáåøî äøèî úåéðáú" -#: src/read.c:1289 +#: src/read.c:1306 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "`%%' àìì äøèî úéðáú" -#: src/read.c:1404 +#: src/read.c:1349 #, fuzzy, c-format msgid "missing 'endif'" msgstr "øñç `endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "÷éø äðúùî íù" -#: src/read.c:1478 +#: src/read.c:1423 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" -#: src/read.c:1503 +#: src/read.c:1448 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'" -#: src/read.c:1531 +#: src/read.c:1476 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" -#: src/read.c:1603 +#: src/read.c:1548 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "`%s' úàøåä éøçà øúåéî èñ÷è" -#: src/read.c:1604 +#: src/read.c:1549 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "øúåéî `%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî" -#: src/read.c:1908 +#: src/read.c:1853 #, fuzzy, c-format msgid "Malformed target-specific variable definition" msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, fuzzy, c-format msgid "target file '%s' has both : and :: entries" msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì" -#: src/read.c:2128 +#: src/read.c:2176 #, fuzzy, c-format msgid "target '%s' given more than once in the same rule" msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî" -#: src/read.c:2138 +#: src/read.c:2186 #, fuzzy, c-format msgid "warning: overriding recipe for target '%s'" msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" -#: src/read.c:2141 +#: src/read.c:2189 #, fuzzy, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ" -#: src/read.c:2254 +#: src/read.c:2308 #, fuzzy, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" -#: src/read.c:2271 +#: src/read.c:2325 #, fuzzy, c-format msgid "warning: overriding group membership for target '%s'" msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr ".`%s øåáò úåùòì äî ïéà" -#: src/remake.c:227 +#: src/remake.c:255 #, fuzzy, c-format msgid "'%s' is up to date." msgstr ".éðëãò øáë `%s'" -#: src/remake.c:323 +#: src/remake.c:350 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, fuzzy, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà" -#: src/remake.c:425 +#: src/remake.c:452 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr ".`%s' äøèî õáå÷ ïçåá\n" -#: src/remake.c:432 +#: src/remake.c:459 #, fuzzy, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n" -#: src/remake.c:444 +#: src/remake.c:471 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n" -#: src/remake.c:454 +#: src/remake.c:481 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr ".`%s' õáå÷ ïëãòî ïééãò\n" -#: src/remake.c:457 +#: src/remake.c:484 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n" -#: src/remake.c:486 +#: src/remake.c:513 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr ".íéé÷ åðéà `%s' õáå÷\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 #, fuzzy, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n" - -#: src/remake.c:509 src/remake.c:1041 -#, 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:558 #, fuzzy, c-format msgid "Using default recipe for '%s'.\n" msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr ".%s <- %s úéìâòî ìåìú èéîùî" -#: src/remake.c:674 +#: src/remake.c:737 #, fuzzy, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n" -#: src/remake.c:680 +#: src/remake.c:743 #, fuzzy, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n" -#: src/remake.c:694 +#: src/remake.c:757 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n" -#: src/remake.c:699 +#: src/remake.c:762 #, fuzzy, c-format msgid "Target '%s' not remade because of errors." msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî" -#: src/remake.c:751 +#: src/remake.c:814 #, fuzzy, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" -#: src/remake.c:756 +#: src/remake.c:819 #, fuzzy, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" -#: src/remake.c:761 +#: src/remake.c:824 #, fuzzy, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n" -#: src/remake.c:764 +#: src/remake.c:827 #, fuzzy, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" -#: src/remake.c:782 +#: src/remake.c:845 #, fuzzy, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n" -#: src/remake.c:789 +#: src/remake.c:852 #, fuzzy, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:865 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà" -#: src/remake.c:804 +#: src/remake.c:867 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr " (`%s' :VPATH õáå÷ íù)" -#: src/remake.c:824 +#: src/remake.c:891 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr ".`%s' äøèî ùãçî úåðáì áééç\n" -#: src/remake.c:830 +#: src/remake.c:897 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " .`%s' VPATH íùî íìòúî\n" -#: src/remake.c:839 +#: src/remake.c:906 #, fuzzy, c-format msgid "Recipe of '%s' is being run.\n" msgstr ".`%s' øåáò úåãå÷ô õéøî\n" -#: src/remake.c:846 +#: src/remake.c:913 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n" -#: src/remake.c:849 +#: src/remake.c:916 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr ".`%s' ùãçî úééðáá äçìöä\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +1988,7 @@ msgstr "" "\n" "# No implicit rules." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1812,7 +1996,7 @@ msgstr "" "\n" "# No implicit rules." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1821,11 +2005,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 +2217,47 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatic" # These are printed under -p, so they are left in English. -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "default" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "environment" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "environment under -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "command line" -#: src/variable.c:1671 +#: src/variable.c:1804 #, fuzzy msgid "'override' directive" msgstr "`override' directive" -#: src/variable.c:1682 +#: src/variable.c:1814 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (from `%s', line %lu):\n" -#: src/variable.c:1745 +#: src/variable.c:1877 #, fuzzy msgid "# variable set hash-table stats:\n" msgstr "# %u variables in %u hash buckets.\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2076,7 +2265,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1760 +#: src/variable.c:1892 #, fuzzy msgid "" "\n" @@ -2085,7 +2274,7 @@ msgstr "" "\n" "# Pattern-specific variable values" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2093,7 +2282,7 @@ msgstr "" "\n" "# No pattern-specific variable values." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2102,7 +2291,7 @@ msgstr "" "\n" "# %u pattern-specific variable values" -#: src/variable.h:229 +#: src/variable.h:237 #, fuzzy, c-format msgid "warning: undefined variable '%.*s'" msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ" @@ -2127,22 +2316,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2150,12 +2339,12 @@ msgstr "" "\n" "# VPATH Search Paths\n" -#: src/vpath.c:620 +#: src/vpath.c:617 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# No `vpath' search paths." -#: src/vpath.c:622 +#: src/vpath.c:619 #, fuzzy, c-format msgid "" "\n" @@ -2164,7 +2353,7 @@ msgstr "" "\n" "# %u `vpath' search paths.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 #, fuzzy msgid "" "\n" @@ -2173,7 +2362,7 @@ msgstr "" "\n" "# No general (`VPATH' variable) search path." -#: src/vpath.c:631 +#: src/vpath.c:628 #, fuzzy msgid "" "\n" @@ -2184,37 +2373,47 @@ 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# Invalid value in `update_status' member!" @@ -2383,6 +2582,12 @@ msgstr "" #~ msgid "virtual memory exhausted" #~ msgstr "éìàåèøéåä ïåøëæä øîâð" +#~ 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'" diff --git a/po/hr.gmo b/po/hr.gmo index 2379f8f603866ef7f9f38e11cc88db773d620d19..a823d813a619b8430593116a92e5deb73edca12f 100644 GIT binary patch delta 18240 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 VX;7-w(OT&L9}@UaC+m01{{rt@qVxa& diff --git a/po/hr.po b/po/hr.po index b43c9d1..60dcecf 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. 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-06 11:39-0800\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-28 10:58-0700\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" -"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-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.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:1107 msgid "" "\n" "# Directories\n" @@ -138,225 +141,255 @@ msgstr "" "\n" "# Direktoriji\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ključ %s, vrijeme zadnje izmjene %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Ne" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " datoteke, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "ne" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " nemogućnosti" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " do sada." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, 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:411 #, c-format msgid "Removing intermediate files...\n" -msgstr "Uklanjanju se privremene posredne datoteke...\n" +msgstr "Uklanjamo privremene posredničke datoteke...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE i .INTERMEDIATE" -#: src/file.c:872 +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE and .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY se međusobno isključuju" + +#: src/file.c:942 msgid "Current time" -msgstr "Trenutačno vrijeme" +msgstr "Trenutno vrijeme" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Nije cilj (target):" -#: src/file.c:1021 +#: src/file.c:1094 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:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Cilj naredbenog retka." # Zadan > standardni -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Ugrađeno pravilo" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila." -#: src/file.c:1034 +#: src/file.c:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." -msgstr "# Datoteka je privremeni posredni preduvjet." +msgstr "# Datoteka je privremeni preduvjet." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Datoteka je preduvjet za .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Datoteka je sekundarna (preduvjet za .SECONDARY)." -#: src/file.c:1040 +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Također napravi:" -#: src/file.c:1046 +#: src/file.c:1123 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:1125 msgid "# File does not exist." msgstr "# Datoteka ne postoji." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Datoteka je vrlo stara." -#: src/file.c:1055 +#: src/file.c:1132 #, 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:1135 msgid "# File has been updated." -msgstr "# Datoteka je bila ažurirana." +msgstr "# Datoteka je osvježena." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." -msgstr "# Datoteka nije bila ažurirana." +msgstr "# Datoteka nije osvježena." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." -msgstr "# UspjeÅ¡no ažurirano." +msgstr "# UspjeÅ¡no osvježena." -#: src/file.c:1078 +#: src/file.c:1155 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:1158 msgid "# Failed to be updated." -msgstr "# Ažuriranje nije uspjelo." +msgstr "# Osvježavanje nije uspjelo." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Nevaljana vrijednost u command_state članu!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -364,7 +397,7 @@ msgstr "" "\n" "# Datoteke" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -374,124 +407,142 @@ msgstr "" "# status datoteka hash-tablice:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:1533 +#: 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "datoteka: nema imena datoteke" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" -msgstr "datoteka: previÅ¡e argumenata" +msgstr "file: previÅ¡e argumenata" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Prazno ime funkcije" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Nevaljani naziv funkcije: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, 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:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s" @@ -499,7 +550,7 @@ msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s" #: src/getopt.c:659 #, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opcija „%s“ je dvosmislena\n" +msgstr "%s: opcija „%s“ nije jednoznačna\n" #: src/getopt.c:683 #, c-format @@ -531,7 +582,7 @@ msgstr "%s: neprepoznata opcija „%c%s“\n" #: src/getopt.c:764 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: nepropisna opcija -- %c\n" +msgstr "%s: nedopuÅ¡tena opcija -- %c\n" #: src/getopt.c:767 #, c-format @@ -546,7 +597,7 @@ msgstr "%s: opcija zahtijeva argument -- %c\n" #: src/getopt.c:844 #, c-format msgid "%s: option '-W %s' is ambiguous\n" -msgstr "%s: opcija „-W %s“ je dvosmislena\n" +msgstr "%s: opcija „-W %s“ nije jednoznačna\n" #: src/getopt.c:862 #, c-format @@ -556,12 +607,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 +635,314 @@ 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:326 #, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Trudimo se joÅ¡ viÅ¡e.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Pravilo uzorka ‘%s’ s iskuÅ¡ano s osnovom ‘%.*s’.\n" -#: src/implicit.c:490 +#: src/implicit.c:506 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Isprobava se pravilo s korijenom uzorka „%.*s“.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Predugi korijen uzorka: „%s%.*s“.\n" -#: src/implicit.c:717 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Odbija se nemogući preduvjet pravila „%s“.\n" +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:718 +#: src/implicit.c:770 #, 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:787 #, 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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" -msgstr "Isprobava se implicitni preduvjet „%s“.\n" +msgstr "Isprobavamo implicitni preduvjet „%s“.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "‘%s’ bi trebalo postojati.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Pronađen je ‘%s’.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Koristimo pravilo kompatibilnosti ‘%s’ zbog ‘%s’.\n" + +#: src/implicit.c:856 +#, 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:772 +#: src/implicit.c:870 #, 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:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Potraga za pravilom s eksplicitnom datotekom „%s“.\n" + +#: src/implicit.c:886 #, 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/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Odbijamo pravilo „%s“ s nemogućim implicitnim zahtjevom „%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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nije pronađeno „%s“.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Nađeno je implicitno pravilo „%s“ za „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Potraga za kompatibilnim pravilom za „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nijedno implicitno pravilo nije nađeno za „%s“.\n" + +#: src/job.c:380 +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:552 msgid " (core dumped)" -msgstr " (**krah**: stanje memorije je dokumentirano!)" +msgstr " (**krah**: stanje (dump) memorije je zapisano!)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" -msgstr " (ignorira se)" +msgstr " (zanemareno)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, 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:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (udaljeno)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, 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:1650 #, 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:1883 #, 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 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: cilj „%s“ ne postoji" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "cilj ne postoji" -#: src/job.c:2108 +#: src/job.c:2104 #, 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:2106 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:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, 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:3522 #, 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:3630 #, 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 +950,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:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Istovar (unloading) dijeljenog (shared) objekta %s\n" -#: src/load.c:256 +#: 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." +msgid "The 'load' operation is not supported on this platform" +msgstr "Operacija „load“ nije podržana na ovoj platformi" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Opcije:\n" -#: src/main.c:336 +#: src/main.c:318 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:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -886,18 +1007,18 @@ msgstr "" " -C DIREKTORIJ, --directory=DIREKTORIJ\n" " prije početka rada prijeđe u DIREKTORIJ\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d ispisuje puno podataka za debugiranje\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -907,12 +1028,12 @@ msgstr "" "umjesto\n" " tih istih varijabli iz Makefiles\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -920,23 +1041,23 @@ msgstr "" " -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n" " čita i koristi DATOTEKU kao Makefile\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help ova pomoć\n" -#: src/main.c:357 +#: src/main.c:339 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:341 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:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -945,14 +1066,18 @@ msgstr "" "izostavi\n" " argument N, nema ograničenja broju poslova\n" -#: src/main.c:364 +#: src/main.c:346 +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:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -962,15 +1087,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:353 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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -982,7 +1107,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:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -991,7 +1116,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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1000,38 +1125,46 @@ msgstr "" " TIP sinkronizacije izlaznih paralelnih " "poslova\n" -#: src/main.c:380 +#: src/main.c:364 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:366 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:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet ne ispisuje recepte\n" -#: src/main.c:390 +#: src/main.c:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1039,34 +1172,34 @@ msgstr "" " -S, --no-keep-going, --stop\n" " ukida opciju -k\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr "" " -d ispisuje informacije praćenja (tracing)\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1075,34 +1208,69 @@ msgstr "" "new=DATOTEKA\n" " smatra da je DATOTEKA zauvijek nova\n" -#: src/main.c:408 +#: src/main.c:395 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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "greÅ¡ka u pisanju: standardni izlaz (stdout)" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "prazni string nije valjano ime datoteke" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "nepoznati tip sinkronizacije izlaza „%s“" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uporaba: %s [opcije] [cilj] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s (%s)\n" + +#: src/main.c:909 +#, 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:940 #, 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:947 #, c-format msgid "" "\n" @@ -1117,28 +1285,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (privremena datoteka): " + # parent > roditelj > predak; pridjev predački -#: src/main.c:1609 +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1146,175 +1318,161 @@ msgstr "" "upozorenje: jobserver nije dostupni: koristi se -j1.\n" "Dodajte „+“ make pravilu pretka (parent)" -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (privremena datoteka)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: privremena datoteka %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Koristimo %s kontroler jobserver-a\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Koristimo zaključavanje (mutex) izlazne sinkronizacije „%s“\n" + +#: src/main.c:2255 #, 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:2327 +#, 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:2339 #, c-format msgid "Updating makefiles....\n" -msgstr "Ažuriraju se Makefiles....\n" +msgstr "Osvježavamo Makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" -#: src/main.c:2303 +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: učitavanje nije uspjelo" + +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nije pronađen" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Nema ciljeva" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, 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:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sProizvedeno za %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sProizvedeno za %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1323,7 +1481,7 @@ msgstr "" "\n" "# „Make“ baza podataka, ispisana na %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1332,549 +1490,574 @@ msgstr "" "\n" "# Gotova „Make“ baza podataka je spremna na %s\n" -# Da prevedem ovo? -#: src/misc.c:643 +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s vrijednost %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s vrijednost %s: nije direktorij" + +#: src/misc.c:613 #, 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 "using default temporary directory '%s'" +msgstr "rabimo zadani (default) privremeni direktorij „%s“" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Pristup je iniciran" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "stvori privremenu datoteku %s: %s" -#: src/misc.c:743 -msgid "User access" -msgstr "Pristup korisnikom" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "brisanje privremene datoteke %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Pristup make-om" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: privremena datoteka %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Pristup potomkom (dijete-proces)" +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: privremena datoteka %s: %s" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "greÅ¡ka pisanja: standardni izlaz (stdout)" +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:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Zaustavljeno.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 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:201 src/posixos.c:434 msgid "duping jobs pipe" -msgstr "stvaranje kopije cijevi za poslove" +msgstr "dupliciramo cijevi za poslove" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "inicijalizacija cijevi jobservera" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "**interna greÅ¡ka**: nevaljani string „%s“ za --jobserver-auth" - -#: src/posixos.c:122 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" -msgstr "zapis jobservera" +msgstr "pisati na jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "jobserver isključen" +msgstr "jobserver je ugaÅ¡en" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect() cijevi poslova" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "čitanje iz cijevi poslova" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "nevaljani string „%s“ za --sync-mutex" + +#: src/posixos.c:681 +#, 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:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" -msgstr "Čita se Makefile „%s“" +msgstr "Čitamo Makefile „%s“" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (nema zadanog cilja)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (staza pretraživanja)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (nije važno)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" -msgstr " (bez proÅ¡irivanja znaka ~)" +msgstr " (bez proÅ¡irenja znaka ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "recept započinje prije prvog cilja" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "nema pravila prije recepta" -#: src/read.c:1136 +#: src/read.c:1154 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "nema separatora (Mislili ste TAB umjesto 8 razmaka?)" # Grr, živjela engleska množina! I Å¡to sad da radim s onim %s-om? -#: src/read.c:1138 +#: src/read.c:1156 #, c-format msgid "missing separator" msgstr "nema separatora" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "nema uzorka za cilj" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "nekoliko uzoraka za cilj" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "uzorak cilja ne sadrži „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "nema „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "prazno ime varijable" -#: src/read.c:1478 +#: src/read.c:1423 #, 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:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "nema „endef“, nedovrÅ¡eni „define“" -#: src/read.c:1531 +#: src/read.c:1476 #, 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:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "suviÅ¡ni tekst nakon „%s“ direktive" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "suviÅ¡ni „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "samo jedan „else“ po uvjetnom izrazu" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Deformirana definicija varijable specifične za cilj" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT ne bi trebao imati preduvjete (zahtjeve)" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT ne bi trebao imati naredbe" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "preduvjeti se ne mogu definirani u receptima" -#: src/read.c:1986 +#: src/read.c:2057 #, 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:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "pomijeÅ¡ana su implicitna i normalna pravila" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "ciljna datoteka „%s“ sadrži „:“ i „::“" -#: src/read.c:2128 +#: src/read.c:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, 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:350 #, 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:416 #, 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:426 #, 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:452 #, 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:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Datoteka „%s“ je već bila razmatrana.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, 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:484 #, 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:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Datoteka „%s“ ne postoji.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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" - -#: src/remake.c:507 src/remake.c:1039 -#, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Pronađeno je implicitno pravilo za „%s“.\n" +" vremenski žig visoke rezolucije" -#: src/remake.c:509 src/remake.c:1041 +#: src/remake.c:538 #, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Nijedno implicitno pravilo nije pronađeno 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:515 +#: src/remake.c:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kružna ovisnost %s <- %s je odbačena." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Preduvjeti za ciljnu datoteku „%s“ su gotovi.\n" +msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Nema potrebe preraditi cilj „%s“" -#: src/remake.c:804 +#: src/remake.c:867 #, 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:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Cilj „%s“ se mora preraditi.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, 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:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2065,7 @@ msgstr "" "\n" "# Implicitna pravila" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1890,19 +2073,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 +2099,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" @@ -1944,7 +2132,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 +2140,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" @@ -2009,11 +2197,11 @@ msgstr "Zaustavljeno (signal) (SIGSTOP)" #: src/signame.c:171 msgid "CPU time limit exceeded" -msgstr "Prekoračeno je vremensko ograničenje procesora (SIGXCPU)" +msgstr "Procesor je premaÅ¡io ograničenje za vrijeme 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 +2211,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 se promijenio (SIGWINCH)" #: src/signame.c:189 msgid "Continued" @@ -2092,7 +2280,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 +2313,45 @@ msgstr "" "# statistika hash-tablice:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatsko" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "zadano" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "okolina" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "Makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" -msgstr "okolina pod -e" +msgstr "okolina ispod -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "naredbeni redak" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "„override“ direktiva" -#: src/variable.c:1682 +#: src/variable.c:1814 #, 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:1877 msgid "# variable set hash-table stats:\n" msgstr "# statistika varijabli u hash-tablici:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2171,7 +2359,7 @@ msgstr "" "\n" "# Varijable\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2179,7 +2367,7 @@ msgstr "" "\n" "# Vrijednosti varijabli specifične za uzorke" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2187,7 +2375,7 @@ msgstr "" "\n" "# Nema vrijednosti varijabli specifične za uzorke." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2196,7 +2384,7 @@ msgstr "" "\n" "# %u vrijednosti varijabli specifične za uzorke" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "upozorenje: nedefinirana varijabla %.*s" @@ -2223,22 +2411,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2246,11 +2434,11 @@ msgstr "" "\n" "# VPATH staza za pretraživanje\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Nema „vpath“ staze za pretraživanje." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2259,7 +2447,7 @@ msgstr "" "\n" "# %u „vpath“ staza za pretraživanje.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2267,7 +2455,7 @@ msgstr "" "\n" "# Nema općenite („VPATH“ varijable) staze za pretraživanje." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2278,39 +2466,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" -#: 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)" +"interna greÅ¡ka: nije moguće otvoriti semafor jobservera „%s“: (GreÅ¡ka %ld: " +"%s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klijent jobservera (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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:449 +#, 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:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "nevaljano zaključavanje (mutex) sinkronizacije izlaza: %s" + +# 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 +2585,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 c66e93170b3fe079c8746d4dd5afb938d246bb9d..5098f791fd33733993b13ff9e60671be2d66e4f1 100644 GIT binary patch delta 11165 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 diff --git a/po/id.po b/po/id.po index f2d8702..68d61ec 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -131,221 +136,253 @@ msgstr "" "\n" "# Direktori\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kunci %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Tidak" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " berkas, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "tidak" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " tidak mungkin" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " sejauh ini." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Menghapus berkas sementara '%s'" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Menghapus berkas sementara...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Waktu saat ini" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Bukan sebuah target:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (dibutuhkan oleh .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Baris perintah target." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Tidak ada aturan implisit." -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Pencarian aturan implisit sudah selesai." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Pencarian aturan implisit belum selesai." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Pola/implisit atau statis stem: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Berkas merupakan dibutuhkan untuk sementara." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (dibutuhkan oleh .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Juga membuat:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Waktu ubah sudah diperiksa." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Berkas tidak ada." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Berkas sudah sangat tua." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Terakhir dimodifikasi %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Berkas sudah diperbarui." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Berkas belum diperbarui." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Sukses memperbarui." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Perlu untuk diupdate (-q diset)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Gagal untuk mengupdate." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Nilai yang salah dalam anggota 'command_state' !" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -353,7 +390,7 @@ msgstr "" "\n" "# Berksa" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -363,127 +400,150 @@ msgstr "" "# berkas statistik hash-table:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" -msgstr "" +msgstr "berkas: nama berkas tidak ada" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "menulis: %s: %s" -#: src/function.c:2245 src/function.c:2282 -#, fuzzy, c-format +#: src/function.c:2363 src/function.c:2402 +#, c-format msgid "close: %s: %s" -msgstr "open: %s: %s" +msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" -msgstr "" +msgstr "berkas: terlalu banyak argument" -#: src/function.c:2277 -#, fuzzy, c-format +#: src/function.c:2397 +#, c-format msgid "read: %s: %s" -msgstr "menulis: %s: %s" +msgstr "baca: %s: %s" -#: src/function.c:2290 -#, fuzzy, c-format +#: src/function.c:2409 +#, 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:2527 +#, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'" -#: src/function.c:2483 +#: src/function.c:2608 #, 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:2791 +#, 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:2793 +#, 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:2795 +#, 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:2798 +#, 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:2801 +#, 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 #, c-format @@ -557,147 +617,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:326 #, 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:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, 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:506 #, 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:768 +#, 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:770 +#, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Mencoba persyaratan dari aturan '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Mencoba persyaratan implisit '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Berkas '%s' tidak ada.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Mencari aturan dengan berkas sementara '%s'.\n" + +#: src/implicit.c:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Mencari aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Tidak dapat membuat berkas sementara\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (core di-dump)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (diabaikan)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Menunggu pekerjaan yang belum selesai...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (remote)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Membersihkan berkas batch sementara %s\n" -#: src/job.c:956 +#: src/job.c:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -706,87 +828,87 @@ msgstr "" "\n" "Terhitung %d argumen gagal untuk dijalankan\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: archive '%s' tidak ada" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Tidak dapat mengembalikan stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mungkin kehabisan ruang environment" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Membuat berkas batch sementara %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -795,7 +917,7 @@ msgstr "" "Batch file contents:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -804,7 +926,7 @@ msgstr "" "Batch file contents:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +936,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:317 msgid "Options:\n" msgstr "Opsi:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Diabaikan untuk kompatibilitas.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,17 +993,17 @@ msgstr "" " -C DIRECTORI, --directory=DIREKTORI\n" " Pindah ke DIREKTORI sebelum melakukan apapun.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Menampilkan banyak informasi debug.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,14 +1011,15 @@ msgstr "" " -e, --environment-overrides\n" " Variabel lingkungan memaksa makefiles.\n" -#: src/main.c:350 -#, fuzzy +# +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -894,17 +1027,17 @@ msgstr "" " -f BERKAS, --file=BERKAS, --makefile=BERKAS\n" " Baca BERKAS sebagai sebuah makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -913,7 +1046,7 @@ msgstr "" " Cari di DIREKTORI untuk makefile yang " "disertakan.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -921,13 +1054,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -937,7 +1074,7 @@ msgstr "" " Jangan menjalankan multiple pekerjaan kecuali " "beban dibawah N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -945,7 +1082,7 @@ msgstr "" " -L, --check-symlink-times Gunakan waktu mtime terbaru diantara symlinks " "dan target.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -955,7 +1092,7 @@ msgstr "" " Jangan menjalankan perintah apapun; tampilkan " "saja apa yang akan dikerjakan.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -965,7 +1102,7 @@ msgstr "" " Pertimbangkan BERKAS sudah sangat tua dan " "jangan membuatnya lagi.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -973,11 +1110,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -985,28 +1122,34 @@ msgstr "" " -q, --question Tidak menjalankan perintah. Mengeluarkan " "status saja dan mengatakan up to date.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1014,26 +1157,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Matikan opsi -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr "" " --trace Menampilkan banyak informasi debug.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1041,7 +1184,7 @@ msgstr "" " --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan " "secara implisit.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1050,7 +1193,7 @@ msgstr "" " Pertimbangkan BERKAS sebagai sebuah berkas " "baru.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1058,27 +1201,60 @@ msgstr "" " --warn-undefined-variables Peringatkan akan adanya variabel yang tidak " "terdefinisi yang direferensikan.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "error menulis: stdout" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "`string' kosong tidak valid sebagai nama file" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "spesifikasi tingkat debug tidak diketahui '%s'" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "unknown output-sync type '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Penggunaan: %s [opsi] [target] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Laporkan bugs kepada \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1093,27 +1269,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (berkas sementara): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1121,163 +1301,153 @@ msgstr "" "Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada " "aturan make paling atas." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1841 +#, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (berkas sementara)" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2095 +#, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Mereset kembali ke mode satu job (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "unknown output-sync type '%s'" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Memperbarui makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: failed to load" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Gagal membuat lagi makefile '%s'." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile yang dimasukan '%s' tidak ditemukan." -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Tidak ada targets" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Memperbarui tujuan target....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sAplikasi ini dibuat untuk %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 +#, 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 +1457,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:3682 #, c-format msgid "" "\n" @@ -1296,7 +1466,7 @@ msgstr "" "\n" "# Membuat basis data, ditampilkan %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1305,384 +1475,413 @@ msgstr "" "\n" "# Selesai membuat basis data %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Membuat berkas batch sementara %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Buat akses" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (berkas sementara): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Akses anak" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Berhenti.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "membuat pipa pekerjaan" -#: src/posixos.c:98 src/posixos.c:251 -#, fuzzy +# +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" -msgstr "membuat pipa pekerjaan" +msgstr "duping pipa pekerjaan" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "inisiasi pipa server pekerja" -#: src/posixos.c:119 +#: src/posixos.c:261 #, fuzzy, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "internal error: tidak valid --jobserver-fds string '%s'" +msgid "invalid --jobserver-auth string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" -#: src/posixos.c:122 -#, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Jobserver client (fds %d,%d)\n" - -#: src/posixos.c:138 -#, fuzzy -msgid "jobserver pipeline" -msgstr "inisiasi pipa server pekerja" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "menulis jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "" +msgstr "server pekerja dimatikan" -#: src/posixos.c:303 -#, fuzzy +# +#: src/posixos.c:486 msgid "pselect jobs pipe" -msgstr "membaca pipa pekerjaan" +msgstr "pselect pipa pekerjaan" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "membaca pipa pekerjaan" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Membaca makefile '%s'" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (tidak terdapat tujuan baku)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (jalur pencarian)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (tidak peduli)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (tidak terdapat ekspansi tilde ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "perintah dijalankan sebelum target pertama" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "hilang aturan sebelum menjalankan perintah" -#: src/read.c:1136 -#, fuzzy, c-format +#: src/read.c:1154 +#, 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 -#, fuzzy, c-format +#: src/read.c:1156 +#, c-format msgid "missing separator" -msgstr "pemisah %s hilang" +msgstr "pemisah hilang" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "pola target hilang" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "pola target banyak" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "pola target tidak memiliki '%%'" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "hilang 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nama variabel kosong" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "Kelebihan text sesudah 'endef' directive" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "hilang 'endef', tidak diselesaikan 'define'" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "kelebihan text sesudah 'endef' directive" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "kelebihan text sesudah '%s' directive" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "kelebihan '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "hanya satu 'else' dalam setiap kondisi" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definisi variable target-specific memiliki format yang salah" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "persyaratan tidak dapat didefinisikan dalam script perintah" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "grup target harus menyediakan sebuah perintah" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "aturan pola implisit dan static tercampur" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "aturan implisit dan aturan normal tercampur" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "peringatan: memaksa perintah untuk target '%s'" -#: src/read.c:2141 +#: src/read.c:2189 #, 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:2308 +#, 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:2325 +#, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Tidak ada yang harus dilakukan untuk '%s'." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' sudah baru." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Pruning file '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Mempertimbangkan berkas target '%s'.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Berkas '%s' baru saja dipertimbangkan.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Sedang memperbarui berkas '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Selesai memperbarui berkas '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Berkas '%s' tidak ada.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1690,147 +1889,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Ketergantungan %s <- %s melingkar dijatuhkan." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Tidak perlu membuat lagi target '%s'" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; menggunakan nama VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Harus membuat lagi target '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Mengabaikan nama VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Perintah dari '%s' sedang dijalankan.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Sukses membuat kembali target berkas '%s'.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Menggunakan perintah baku untuk '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2031,7 @@ msgstr "" "\n" "# Aturan implisit." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1846,20 +2039,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 +2235,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 +2270,44 @@ msgstr "" "# berkas statistik hash-table:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "otomatis" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "baku" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "lingkungan" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "lingkungan dibawah opsi -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "baris perintah" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "'override' direktif" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (dari '%s', baris %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# statistik variable set hash-table:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2117,7 +2315,7 @@ msgstr "" "\n" "# Variabel\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2125,7 +2323,7 @@ msgstr "" "\n" "# Nilai Variabel Pola-Spesifik" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2133,7 +2331,7 @@ msgstr "" "\n" "# Tidak terdapat nilai variabel pola-spesifik" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2142,7 +2340,7 @@ msgstr "" "\n" "# %u nilai variabel pola-spesifik" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "peringatan: variabel '%.*s' tidak terdefinisi" @@ -2166,24 +2364,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2191,11 +2389,11 @@ msgstr "" "\n" "# VPATH Jalur Pencarian\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Tidak ada 'vpath' dalam jalur pencarian." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2204,7 +2402,7 @@ msgstr "" "\n" "# %u 'vpath' jalur pencarian.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2212,7 +2410,7 @@ msgstr "" "\n" "# Tidak ada ('VPATH' variabel) umum dalam jalur pencarian." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2222,38 +2420,73 @@ msgstr "" "# Jalur pencarian umum untuk variabel 'VPATH':\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver client (semaphore %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "semaphore or child process wait: (Error %ld: %s)" +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Invalid function name: %s" + +#~ 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" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." + +#~ 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 7da528b59fdff637b2c8b410aae6a29a2c8456ff..8e082aadd4376a3c0ebc7d7950ec0b6c705777e9 100644 GIT binary patch delta 8754 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 delta 12885 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\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:1107 msgid "" "\n" "# Directories\n" @@ -138,225 +143,257 @@ msgstr "" "\n" "# Directory\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "No" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " file, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "no" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " impossibilità" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " finora." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminazione del file intermedio «%s»" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Rimozione dei file intermedi...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Ora corrente" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Non è un obiettivo:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Obiettivo a riga di comando." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Regola incorporata" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Regola di ricerca implicita completata." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Regola di ricerca implicita non completata." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stem implicito/statico del modello: «%s»\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Il file è un prerequisito intermedio." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Inoltre, genera:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Ora di modifica mai controllata." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Il file non esiste." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Il file è molto vecchio." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Ultima modifica %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Il file è stato aggiornato." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Il file non è stato aggiornato." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Aggiornato con successo." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Richiede di essere aggiornato (-q è impostato)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Aggiornamento non riuscito." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Valore illecito nel membro \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -364,7 +401,7 @@ msgstr "" "\n" "# File" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -374,124 +411,147 @@ msgstr "" "# statistiche tabella hash dei file:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: file mancante" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "apertura: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "scrittura: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "chiusura: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: troppi argomenti" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "lettura: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implementata su questa piattaforma: funzione «%s»" -#: src/function.c:2483 +#: src/function.c:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Nome della funzione vuoto" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Nome della funzione non valido: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Nome della funzione troppo lungo: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s" @@ -581,134 +641,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:326 #, 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:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, 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:506 #, 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:768 +#, 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:770 +#, 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:787 #, 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:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Tentativo di usare il prerequisito implicito «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Il file «%s» non esiste.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Trovata una regola implicita per «%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ricerca di una regola implicita per «%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossibile creare un file temporaneo\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (creato dump del core)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignorato)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attesa per i processi non terminati...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -717,94 +838,94 @@ msgstr "" "\n" "Contati %d argomenti nell'avvio fallito\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: l'obbiettivo «%s» non esiste" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Impossibile ripristinare lo standard error\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Creazione del file batch temporaneo %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -813,7 +934,7 @@ msgstr "" "Contenuti del file batch:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -822,7 +943,7 @@ msgstr "" "Contenuti del file batch:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -833,46 +954,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:317 msgid "Options:\n" msgstr "Opzioni:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorato per compatibilità.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -881,17 +1012,17 @@ msgstr "" " Cambia DIRECTORY prima di fare qualunque " "cosa.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Mostra molte informazioni di debug.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -900,14 +1031,14 @@ msgstr "" " Le variabili ambiente sovrascrivono i " "makefile.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -915,16 +1046,16 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " Legge FILE come un makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -932,7 +1063,7 @@ msgstr "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Cerca nella DIRECTORY per i makefile inclusi.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -940,14 +1071,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -957,7 +1092,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -965,7 +1100,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -975,7 +1110,7 @@ msgstr "" " Non esegue alcun set di istruzioni; lo stampa " "solamente.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -985,7 +1120,7 @@ msgstr "" " Considera il FILE come molto vecchio e non " "riesegue make.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -994,11 +1129,11 @@ msgstr "" " Sincronizza l'output dei processi paralleli " "dal TIPO.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1006,28 +1141,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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1036,27 +1177,27 @@ msgstr "" " Disattiva l'opzione -k.\n" # ## touch = in questo contesto è simile alla funzione del comando 'touch' -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Stampa informazioni di tracciamento.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1064,7 +1205,7 @@ msgstr "" " --no-print-directory Disattiva l'opzione -w, anche se era stata " "attivata implicitamente.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1072,7 +1213,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1080,28 +1221,61 @@ msgstr "" " --warn-undefined-variables Avvisa quando viene referenziata una variabile " "non definita.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "errore in scrittura: stdout" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "livello di debug specificato sconosciuto «%s»" -#: src/main.c:794 +#: src/main.c:874 #, 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:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opzioni] [obiettivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Segnalare i bug a \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1116,29 +1290,33 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (file temporaneo): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1146,168 +1324,158 @@ msgstr "" "attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla " "regola make superiore." -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (file temporaneo)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reimpostazione alla modalità a singolo processo (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Aggiornamento dei makefile....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: caricamento non riuscito" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Riesecuzione del makefile «%s» non riuscita." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Il makefile «%s» incluso non è stato trovato." -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Impossibile ritornare alla directory originale." -#: src/main.c:2402 +#: src/main.c:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Nessun obiettivo" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Aggiornamento degli obiettivi....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilato per %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilato per %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1486,7 @@ msgstr "" "ridistribuirlo.\n" "%s Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1327,7 +1495,7 @@ msgstr "" "\n" "# Generazione del database delle informazioni, creato il %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1336,385 +1504,415 @@ msgstr "" "\n" "# Generazione del database completata il %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creazione del file batch temporaneo %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Accesso make" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (file temporaneo): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Accesso processo figlio" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "errore in scrittura: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Arresto.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "creazione della pipe dei processi" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "beffa della pipe dei processi" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "scrittura del jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "job server spento" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect della pipe dei processi" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "lettura della pipe dei processi" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "errore interno: stringa illecita per --jobserver-auth «%s»" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Lettura del makefile «%s»" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (nessun obiettivo predefinito)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (percorso di ricerca)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (ignora)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (nessuna espansione per «~»)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, 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:1053 #, c-format msgid "missing rule before recipe" msgstr "regola mancante prima del set di istruzioni" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "separatore mancante" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "modello mancante per l'obiettivo" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "modelli multipli per l'obiettivo" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "il modello dell'obiettivo non contiene alcun «%%»" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "«endif» mancante" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nome vuoto della variabile" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "testo non pertinente dopo la direttiva «define»" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "«endef» mancante, «define» non terminato" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "testo non pertinente dopo la direttiva «endef»" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "testo non pertinente dopo la direttiva «%s»" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "«%s» non pertinente" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "un solo «else» per condizionale" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Definizione malformata della variabile specifica per l'obiettivo" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "regole del modello implicite e statiche miste" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "regole implicite e normali miste" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nessuna operazione da eseguire per «%s»." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "«%s» è aggiornato." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Pulizia del file «%s».\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Considerato il file obiettivo «%s».\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Il file «%s» è già stato esaminato.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, 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:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Aggiornamento del file «%s» terminato.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Il file «%s» non esiste.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1722,150 +1920,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dipendenza circolare %s <- %s scartata." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Abbandono sul file obiettivo «%s».\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Non è necessario rigenerare l'obiettivo «%s»" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; uso del nome VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "L'obiettivo «%s» deve essere rigenerato.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Nome VPATH «%s» ignorato.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "File obiettivo «%s» rigenerato correttamente.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Uso dei comandi predefiniti per «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2065,7 @@ msgstr "" "\n" "# Regole implicite" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1881,7 +2073,7 @@ msgstr "" "\n" "# Regole non implicite." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1890,11 +2082,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 +2305,44 @@ msgstr "" "# statistiche della tabella hash:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatico" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "predefinito" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "ambiente con l'opzione -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "riga di comando" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "direttiva \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (da «%s», riga %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# statistiche tabella di hash del set di variabili:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2153,7 +2350,7 @@ msgstr "" "\n" "# Variabili\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2161,7 +2358,7 @@ msgstr "" "\n" "# Valori di variabile non specifici per il modello" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2169,7 +2366,7 @@ msgstr "" "\n" "# Nessun valore per la variabile \"pattern-specific\"." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2178,7 +2375,7 @@ msgstr "" "\n" "# %u valori di variabile specifici per il modello" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "attenzione: variabile «%.*s» non definita" @@ -2205,22 +2402,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2228,11 +2425,11 @@ msgstr "" "\n" "# Percorsi di ricerca VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Non ci sono percorsi di ricerca 'vpath'." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2241,7 +2438,7 @@ msgstr "" "\n" "# percorsi di ricerca 'vpath' %u.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2249,7 +2446,7 @@ msgstr "" "\n" "# Percorso di ricerca non generale (variabile «VPATH»)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2259,17 +2456,17 @@ msgstr "" "# Percorso di ricerca generale (variabile «VPATH»):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" @@ -2277,17 +2474,52 @@ msgstr "" "errore interno: impossibile aprire il semaforo del jobserver «%s»: (Errore " "%ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Client del jobserver (semaforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "attendere semaforo o processo figlio (Errore %ld: %s)" + +#: src/w32/w32os.c:449 +#, 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:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome della funzione non valido: %s" + +#~ 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" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione." + +#~ 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 a9264d80a897859b987b1b572e5943fbc7557787..e90152fa4fdb6813ac829758f166241df223b39d 100644 GIT binary patch delta 15480 zcma*s30zgxzQFN))SI*BJb`Xh6h#mf1wqUS6=xJ@O+gNF6gbEMhq4YF%z54l;jB5L zf_k)^(#mWeZ==<%TSw5k4R`RCuUozM`|q_uEPe0o&*$%Vt+l7M*ZS{uHg)~CYBvs5 zcYofv##W8(Lz|}g;TsJ!ZBaE%Tk0>Znl`1gYM+Y1)E8nW+=mVERjh^AFaW>85UdfT zX^pTa>No_Y-Hy%BKn`_lM<{fl;azNw|Hk@QuZyNhA6jEejKpymkI}df+vDfh25nu{ zjr=j2dVd^+UL1nbdpSQArCxw8?yr4Hp)U<%yJ^~JT!jPhBXnX*x;+e6qSW6(xzK=6 zO-sW~I23=w5g6ND({gbm%5@usY1&{Mi7B`NXW@?+&Hc4WJv1!}H{)1*6XinwJvHqy zOvM~5$H#F-FP;uRMd@(saCL)J)IBbp6u`w=0nd?<3H`tDHodZ}4Pve95EC%9RR{O0!jDG|T zztSKl^rq4fhhPg#Kt@qZL+QW{tNjeNqW&gIj@&>-U;9&}rjb5cILb)O#HP3rC20>J z>7cz~)qjd){F#2OEfXaNjzCGqS(f=oerbo0Y1iIG(n9-hY>C~NH#sjBJK{8Cm*&Q{ zcn+B*?PF|(^~hZ5XeX4Uo#>{}n!*BI02QH!<_yzjoFUY;L)?}J=WD>T)#V8}T z1?2|Mq2$0jC{O6K{1s)ST0Eq#Hw0zwlTg}MA|vY7&QQ>4@S)66jRBh04udU6qI6(B z4#agRH+~ys=)b_X@D|E>S2(CU`mhBy8KkZoj5_u4C>?QOJ9+<$C^Vtr9LkWqiE?2d z$`Ieiy4aPMSf-{AN{)=ST!5pfZ$0q;=Dk%d{9v})?W3;g-S)YsYmK{YI z!Sm?WDZEBOdi*z(3)Li}*(viAzgTk?18f(=Hh z{gEgm5|477hp{tyP_9>uGD25Tro7Be;QMpEJeFe%5 zHlaM(8I*`z%7~_~U54|2ru3rr{LI6W&DWscnpUQa_X=ibHvl zM^J9G4}YnVMTDBhn&X4QT+@r#=Ox11XkUum|-Qa4_C7>&$=Tc$IwfP=?%t za$*72z!$L*zKSwrpIZI{r2{o5sHy0R-Kmd37EkSQjKGU1BXSF6=vybK>qlZA?ysd# zsEa#s5FWw4_$~IwP7~FQ>?lLI5+#XFSncni%o2*8r5jLe7h;m*ON)9AqA6$p>HoS{PjCX|g72d|p*B_JhK`bCgHSs7Ft)%YC>`2_l0yekF8qq+ z=P1{^W$o9esp}3xc`K5pG5&JlJR0Q0ofwT?Y=A#t5dMaeWSyt0B4$$>{urf3h=!xA?IKMEI6=H_FRx%wN*6ttSDrXT?2343A_OhCz* zRFo0OMj6RfC^sxZ>G&m-oVkJi*zjSsE`(rn>h3WVT2ioMBtDK|_>5J*iPFJ7$V<%B^;VKTtUr;&}J6qj&9!id^K^~Ofe+tqwA4<~L64l&$54j;Ce}i~B$bqbC?hcnTjLCr*LM-hl&wPP@D((F|39H1L-aGsNVK1$ zR;Xx{k?4=|UOTP&Zma%|Ro9YLQuRQY(|D9De;DQbRVW=ekCIbwpd9xpc63v?Nue9o zx2qGPP)1@t%Fu5^+5Zgo!0RZ<+B`+ws2jGUJ{e``7h!KKK{@X_w#PZF!h|=>}*a|aHI<^w!2@jxj;6s%2e#98`cc`hFj#1PLt@@u) z9;CrM=3ja^V4j+rbR16o5QgL5u`347SIIdJL2R1ECpccf3E0@h zI*utg3tz`P49-^P9Y<;Z0Y~H598Jr|oj4W)7V?>f?gbQR)A}u9Uhx!;lLHpBJYp8E z#t%?VoV`T-ae4yjoAw`+^U@zt=Y3`w@~HfI&3b}zoqwW%6PL{Qy0FC zv}wa1S5J5q|K-s?wpI%dsoE4GMDN zCG3emU>dgHsur9L*qwSgCSdad^*+zXy42r78RAb+9;98Ndcv95nR=1s^C%v4Z=4TT7N5+$qO!NzzEAH;95A^wUnSbvwg(Maq--Gh=7 z2XPdBkMcm#yHyU&!!FcIEI&r+V6{EWznmCGAsiQ@ilMtjxJPr!E6 z*Q4Z238vteC>D09=aF!Cfdx__uwGzZ7oMAanAkr_`K=VSnnwESF;x z^{XgTqU~2pbYBdjItC?27U3k^fW5ICWlH=GsHB{L(!K$E;MD_ewM70zgN#JvL6z;f zC_{Y$rTu%9IqY*t4edOX{Y7ZQk1!6ep^RjQ!|DO1;B4xJC?jwiM`PV``<$M;WQr zsH1xyh4vJ#U_UIk>~LJY*R%0q+7IA#tWlzdZZ-x|-;87MEXs{)ma3^4kF%-I#cB8o zPQeZ*)D$emLEK+EMIn?O|3;aUjwjU|PeOT;4Ok0LVof}cJ@5r=h__Hiq{b<=f)2or z)bmk}JB;=46KsPwuoYJKip;-1g&{OVpbY6!9FOnfDC~Gz{U|L!xzM{P?Vn>12A@$k zN<*( zU<5Wgt8ya_J5gVW&9D?>@hY~(y64nF))nPJTx9(C%Uq2$)Dm)&a4+dZci zo@~oC7|a3tFbdzoSy=mdwUjzgZfsybJck4DM{I`?FR1!tlh3G5 z0~2vH4aF!UavKL=tryjh#-Ti68p?(C;7oi0!%)AfawZ-JQD2E&@pZJ}kC=qFaVk!K zN$EaAVIU0+UslFj8YoHf0m_ZPLK)KLuc#qRMStq6P>wrn@(Va%)Qy!9v@ z`YR5{y04kXxwQle9ckEu^4eWRxlqg3)$216rM?4);5C%jtL+I+cbhI2Rv z|AC`$;+ty9_Mvq64V1Uz8?(;*%l|#-0B!Lh9E7q^c&z#^l%f6{GqB&=>Mx(8C`0N0 zj_TMV98LWqN{8ya%bSJcaT30V(%$vY>JOYO43PW3L_vo5CPt&*dn)OspmfYYne%6` zK3+qa(>?sNjChmiNxVWx?wrO{qGFTLc!T;7LSFZIL_V>FaA(o@7Ye6{CX}%(93qvtNYtTyHPM!`osew}(VAFH`)2FBt<)XFB0{!6g0)Gz zA ziNtXB7vOFjfl=IFD<@VEU1^kU0uex27MDiSz?M&4-u;U0D1}(s&Jh1axh1}W`!E~> z@jMYqq!2TSYD8b66)~E)z;SYab9LJ<1-8NL2vJ4z>&7aYe^OPH-{F`OL@(ki8n@#P zB9rp__&%}-YDb7n>T~f`BAT*n!-$>)3!-^{Er%V)t(||ypV*mBJVw+d4iGO8&Df_C zbBM=?tHgh3Ka5R@#*}5#iE-3rt4WMBOX{CtwDX&%H8=Nj{}?K@i8E@y`C}B%&g0a3 z;6W_4_Fco*XlsHW5-!SxI22{uic9fR;!ni$R{KHhO}!9z5njqyi9C6J2Mwjf03wcP zOGMIs2`><`EhOGFODr_BEucKj+GpSrtL%^MtmC?fR(mnNOH`++gm}wpcRxj8K2d|l z&xpOmU_!PhX!j7gL}S86RBThN@+8ZJIMmv?jdBOdlhKJ0c!fAg`ENuBW!Y-jtofJ9 z6T}!PSX%}M{a}?lTPMU)A49nZK1aMtxdjnJj3@TcCfg*UrCDMcXrD;5ujiaeX=Dg%x}St zwB4e95l7=?8UGX30nxaFFo=Fc7Y=%y=tpEw?}NEG3;&JPaRVXSPP~n4u`9ZWB%%@Z zJ}8?%5k-BtS!2beywS$^CsUAZ8_~=x@uxCvk6UG-PL;A0`xC1Ok5t%35$g#z=M5qr zA)cpx0A*`M^d&}G_5Y^)p_Drkt0+8)Rk!K1J!&2NsQ1?nrPYVcb0)d$Sqtr1A+GEt zY4(^22~$VK>atC+r`hLZ>)EMx-Q1-+Q}oKC^=zk}=5cV-w=WB*cy%9Xlj$U_z|%&t82x zx$JYC8Oe!ROZ1?sS2K^F5IcD6m>~nlPwnDu6K+&%Di8S zJ0&BxkH7J4A74^pMusz6PqOPt&g|4b+|ul0Xw^<=Ty4((=cLNc7_UXVIZa=fn3f|q zjw0k5cj|KgL_OJ&#bh|Mmawz(DC^)Ty>pbl;;eP`Q@VbRTue$k_10@HG$bh!(6$jNd!7TVL6==Q~#jK3peF8z_Y zrtZul8Jx_QJuOX7$;p_L?Qmuor=q9YT*ep6bR)RmmqwkKgH2Um=BAoQ+ZQ`r*`am3 zB{6Gk#-k7IcK?3X)DTvVhMt&Z*VA*da}v|cUd&0$ksfKGlLy8naBpW$TC&;M)Wn5$ zeU39doo>4Bv%6{rxU^^z)?u_8aJ{Kc;^|pAX?Anq$l*Z~hZzIcHZ}YQUL2$iR@3Lq zv}dS+UF2Zu$IeO^J#J{+s8|_vPN{m-owvfA8gKbPo6WEdZeGoi0j-QSgM-^>gR|_3 z+4gacOnXolJtfhRW>40G>@xaB(%?NUGZK@erQ&T!cP88APIXQV*=%bk^UFPlI&*j@ z9O;>9jyVqItKtcaeX%`kp~ic$G3|zBIdd|(PIh9}Tzj^jX}4!t*^#2BIMR$p4>vRF z56uiFGqQ3rv$ePkGR=`Jvn+#>m^CMr;g)K;Jw1t&c^3+YZZ$>>d#b6~J?1A_cP7n~ zrGf4lH;08cAvsi!xPvvOMz!IFv3Gc;(Kv3W;TYb|xE$BmD2+Q=pWDbos3-Ey7}3kt zt@1haWT)L_&h7%{-;uIJPjr#iRa42kXyhlh+G&n-oj9dL z{g2IP6dzYBH8CsMo)uch7$4uahU_#}$M=rTn4jTXlu>2bOw1vd)N(2ZX%jQjoQdXp z=Hd!fht{|lzrg4_J|yrS9gtJ?WboiBk{QHd7^PKVJU-ac~lz%;&uRnX) zm$%&KIp_0S_IdXE@{iK^b>3ND-qUw~2ECtp?En24)VJ*N6E_d$mG9hp{le3}yu)&B zx!WmUe!ee%C3o<7p7G^BWmdP!J@bluo;AK)kI^qk_il5HYuNRVpC!J$lDn^aNKWIN zj~4guS?cp#@Oh5<^1Z(NTwi{%FHiRBL7|mD!oNGci?{lc{?-52&!q-S+k2NS&9u3F zd8PO2&SCwouOyv2TtB@B-^#+O$p6YL@1j(%ORuYBtX84(Y8z%-rnAZJ zqvm>}8_&C%c-yYcwE1h5pHJNTklHJ6Pr({r-UcJX(~{H(g)%V!?Bsq*gDgnEyz zE3_FgPc|^xZ_u%p;kTiav3EmwySqQPe0gij_Ma@@T4;T7buqfH4>J5WzSrmXZ&&_4 z^8r>#cg$JZv8rsf%2G80{JXo3_lJ#3su@>}rZsu#_F6vb|>4WY(he^6h8K&a2$Y-)m0VMjpYay|tj(J;&5|Z)>Of z?5SSxZtt=uPL}Ur+KbI~@T?@L`JPzAa;YnlZlfM~H6t*==x3n-a3!8Z#DT=ZgC$==N#-9hrww2gwRV0s*x+5T{ z)R#-Xd3>yOd5r%$YlS2a&*#d3$qRANm$%H=RMgfxf5%tV>Rdm&`s*SdnyhUcbvRJB9ZstGB>SW~YX%cYn z6YoB=RlVPz*5W>=8Gqf@#{0saZnhTY*PJAW%l z_K;*WJ~}YOUVLNs0W&M_@r!q}c-_sz{1V;yx#Lv6SpTogIP_Hc7FH^{q5j=%v^ZE` zTshdQhkC5?Tv_X?E)y&SW?J1DfusD^-q>>3m|N&?)I5}$e9sIv*C&=J*6!ox<&N;L zm7nHsHH)n*nRT?X73a%VZ!g=pwtUC#%5PqIyQ?1NO+WNqHNSftde=JDnH!itCHFq? zCQrX>BR4hXd)m~rjy0wh2e)U2%8NX{{5#8ndH)^dE9E_vOB(sb-K+Bm-c!YI*!WY( z{6hZYY1Yx+rN?I3Vxsi>9#HwIeBUFCdL_&5vjh~C1o9Dfxg^GjC~YjAGU7_3j9*H+ zcCT1F5Nj_gud`{NLrBU`!Oc>Hu^ zaAoa(TdA!NZBOY;?=PiM)r|=6G$O`$+v{(9=k=@j(vCmf?@lqm`}FArwrY%br>Bc; zP5Fg5{$$yX!xfn;-yufWQysm&XZlp{@W(Nfq|M1Nzss%ZYk6U2Gx@5JDJB(3@s;W{ zO1esOHz<&Wk%{s?UwO^Z3ECO{=4LyY8{3cn3dQ*VfjTzsdT&lTT1S!1%!3A|D*;C$IF` r<}Fy}x1TOA;A2R2Pi8~DUt=$AF#kjd-h8 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 C`FYU* diff --git a/po/ja.po b/po/ja.po index 8889d15..a748262 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. # 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 21:11+0900\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 01:14+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.3.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:1107 msgid "" "\n" "# Directories\n" @@ -135,218 +142,248 @@ msgstr "" "\n" "# ディレクトリ\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "0" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " 個のファイル, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "0" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " 個の適用不能ファイル名" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " (ここまでに)." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "ファイル '%s' のためののレシピが %s:%lu で指定されました," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "ファイル '%s' のためのレシピが暗黙ルールの探索で見つかりました," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "しかし今は '%s' と '%s' は同じファイルと見なされます." -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "シングルコロン '%s' からダブルコロン '%s' に名前を変えられません" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "ダブルコロン '%s' からシングルコロン '%s' に名前を変えられません" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 中間ファイル '%s' を削除します" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "中間ファイルを削除しています...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s は .NOTINTERMEDIATE と .INTERMEDIATE の両方にはなれません" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s は .NOTINTERMEDIATE と .SECONDARY の両方にはなれません" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE と .SECONDARY は相互に排他的です" + +#: src/file.c:942 msgid "Current time" msgstr "現在時刻" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: タイムスタンプが範囲外です -- 代りに %s とします" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# ターゲットではありません:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 特別扱いのファイル (.PRECIOUS の必要条件)" -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 疑似ターゲット (.PHONY の必要条件)" -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# コマンドラインターゲット." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# デフォルトまたは MAKEFILES, -include/sinclude Makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# ビルトインルール" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# 暗黙ルールの探索が行われました." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# 暗黙ルールの探索は行われませんでした." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 暗黙/静的パターン語幹: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# ファイルは中間必要条件です." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# ファイルは .NOTINTERMEDIATE の必要条件です。" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# ファイルはセカンダリです (.SECONDARYの必要条件)" + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# さらに make:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# 修正時刻がチェックされることはありません." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# ファイルが存在しません." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# ファイルが非常に古いです." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# 最終修正 %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# ファイルは更新されています." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# ファイルは更新されていません." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# レシピを現在実行中です (*これはバグです*)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 依存関係レシピを実行中です (*これはバグです*)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# 更新に成功しました." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# 更新が必要です (-q がセットされています)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# 更新に失敗しました." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_state' メンバに無効な値です!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# ファイル" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -364,124 +401,142 @@ msgstr "" "# ファイルハッシュテーブルの状態:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: ファイル名が指定されていません" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: 引数が多すぎます" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 無効なファイル操作: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "このプラットフォームでは実装されていません: 関数 '%s'" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "終端がない関数呼び出し '%s': '%c' がありません" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "空の関数名" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "無効な関数名: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "関数名が長すぎます: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "引数個数指定(最小値;%u)が無効です: 関数 %s" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "引数個数指定(最大値;%u)が無効です: 関数 %s" @@ -573,133 +628,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:326 #, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "前提条件とともにもう一度試しています.\n" -#: src/implicit.c:490 +#: src/implicit.c:501 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "語幹 '%.*s' とのパターンルールを試します.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "語幹 '%3$.*2$s' とのパターンルール '%1$s' を試します.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "語幹が長すぎます: '%s%.*s'.\n" -#: src/implicit.c:717 +#: src/implicit.c:768 #, 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" +"\n" -#: src/implicit.c:718 +#: src/implicit.c:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "ルールの必要条件 '%s' を試します.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "暗黙の必要条件 '%s' を試します.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "ファイル '%s' が存在する必要があります.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' を見つけました.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "互換性ルール '%s' を %s のために使用します.\n" + +#: src/implicit.c:856 #, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s' で必要条件 '%1$s' を見つけました\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "明示的なファイル '%s' のルールを探します.\n" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"ルール '%s' を却下します。不可能な必要条件 '%s' があるためです.\n" +"\n" -#: src/job.c:548 +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' が見つかりません.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s' のための暗黙ルール '%1$s' を見つけました.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s' のための互換ルールを探します.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s' のための暗黙ルールがありません.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "一時ファイルを作成できません" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (コアダンプしました)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (無視されました)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<ビルトイン>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 未完了のジョブを待っています...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (リモート)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "成功した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "失敗した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "一時的なバッチファイル %s を消去します\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "一時的なバッチファイル %s の消去に失敗しました(%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -708,86 +827,85 @@ msgstr "" "\n" "起動の失敗で %d 個の引数がカウントされました\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "子プロセス %p (%s) に印をつけました.\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: ターゲット '%s' が存在しません" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: ターゲット '%s' を %s のために更新します" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "ターゲットが存在しません" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "このオペレーティングシステムではシステム負荷制限を加えられません" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "システム負荷制限を課すことができませんでした: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" -msgstr "標準入力を復元できませんでした\n" +msgid "Could not restore stdin" +msgstr "標準入力を復元できませんでした" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" -msgstr "標準出力を復元できませんでした\n" +msgid "Could not restore stdout" +msgstr "標準出力を復元できませんでした" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" -msgstr "標準エラー出力を復元できませんでした\n" +msgid "Could not restore stderr" +msgstr "標準エラー出力を復元できませんでした" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe:環境設定のためのメモリを使い尽くすかもしれません" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "一時的なバッチファイル %s を作成します\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -796,7 +914,7 @@ msgstr "" "バッチファイルの内容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -805,7 +923,7 @@ msgstr "" "バッチファイルの内容 :%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d 行目) 不正なシェルコンテキスト (!unixy && !batch_mode_shell)\n" @@ -815,44 +933,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:317 msgid "Options:\n" msgstr "オプション:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 互換性のためのもので, 無視される.\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無条件に全ターゲットを make する.\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -861,16 +989,16 @@ msgstr "" " make 開始前にディレクトリ DIRECTORY へ移動す" "る.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d デバッグ情報を大量に表示する.\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=FLAGS] 様々なタイプのデバッグ情報を表示する.\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -878,12 +1006,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境変数が makefile 中の記述に優先する\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -891,15 +1019,15 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " FILE を makefile として読み込む\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help このメッセージを表示して終了する.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors レシピから返ったエラーを無視する.\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -909,7 +1037,7 @@ msgstr "" " インクルードする makefile を探索する " "DIRECTORY.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -917,14 +1045,18 @@ msgstr "" " -j [N], --jobs[=N] 一度に N 個までのジョブを許可; 無引数だとジョブ" "数制限なし.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE ジョブサーバーを使うスタイルを選ぶ.\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -934,7 +1066,7 @@ msgstr "" " 負荷 が N 未満でない限り複数のジョブを開始しな" "い.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -942,7 +1074,7 @@ msgstr "" " -L, --check-symlink-times シンボリックリンクとターゲットの中で一番新しい " "mtime を使う.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -951,7 +1083,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " レシピを実際に実行しない; 表示するのみ.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -961,7 +1093,7 @@ msgstr "" " FILE をとても古いものと見なして, 再 make しな" "い.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -969,11 +1101,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " 並列ジョブの出力を TYPE で揃える.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -981,25 +1113,33 @@ msgstr "" " -q, --question レシピを実行しない; 更新済であるかどうかを終了" "ステータスで通知.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet レシピを表示しない.\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent レシピをエコーする ( --silent mode は無効にな" "る).\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1007,26 +1147,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k オプションをオフにする.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch ターゲットを再 make する代わりにタッチする.\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace トレース情報を表示する.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version make のバージョン番号を表示して終了する.\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory カレントディレクトリを表示する.\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1034,7 +1174,7 @@ msgstr "" " --no-print-directory -w をオフにする. 暗黙に有効な場合でもオフにす" "る.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1042,34 +1182,67 @@ msgstr "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " FILE をいつでも最新として見なす.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 未定義の変数が参照されたときに警告を発する.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "書き込みエラー: 標準出力" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "空の文字列はファイル名としては無効です" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "不明なデバッグレベル指定 '%s'" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "未知の出力同期型 '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "使い方: %s [オプション] [ターゲット] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"このプログラムは %s 用にビルドされました\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"このプログラムは %s (%s) 用にビルドされました\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "バグレポートは まで.\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1084,200 +1257,196 @@ msgstr "" "例外フラグ = %lx\n" "例外アドレス = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "アクセス保護違反: アドレス 0x%p での書き込み操作\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (一時ファイル): " + +#: src/main.c:1833 #, 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:1841 #, 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:1930 #, 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 (一時ファイル)" +msgid "Makefile from standard input specified twice" +msgstr "標準入力からの makefile が二回指定されました" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (一時ファイル)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 一時ファイル %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "並列ジョブ (-j) はこのプラットフォームでサポートされません." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "単一ジョブ (-j1) モードにリセットします." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "ジョブサーバーコントローラー %s を使います\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "出力同期 mutex %s を使います\n" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "シンボリックリンクはサポートされていません: -L は無効です." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "シャッフルモード: %s を有効にしました\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "makefile の更新中....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "makefile '%s' 自己再帰のおそれあり ― 再make しません.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 読み込みに失敗しました" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "makefile '%s' の再makeに失敗しました." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "インクルードされる makefile '%s' が見つかりませんでした." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "makefile '%s' が見つかりませんでした" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL が二つ以上のターゲットを含んでいます" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "ターゲットがありません" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "ターゲットが指定されておらず, makefile も見つかりません" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "最終ターゲットを更新中....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' オプションは空でない文字列引数を要求します" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' オプションは正の整数引数を要求します" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sこのプログラムは %s 用にビルドされました\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sこのプログラムは %s (%s) 用にビルドされました\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1286,7 +1455,7 @@ msgstr "" "\n" "# Make データベース出力 %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1295,381 +1464,411 @@ msgstr "" "\n" "# Make データベース終了 %s\n" -#: src/misc.c:643 +#: src/misc.c:602 #, 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:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 値 %s: ディレクトリではありません" -#: src/misc.c:743 -msgid "User access" -msgstr "ユーザアクセス" +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "デフォルト一時ディレクトリ '%s' を使用します" -#: src/misc.c:791 -msgid "Make access" -msgstr "make アクセス" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "一時ファイルを作成 %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "子プロセスアクセス" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "一時ファイルを unlink %s: %s" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 一時ファイル %s: %s" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "書き込みエラー: 標準出力" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告: 出力ロックを取得できないので、出力同期を無効にします。" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". 中止.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "ジョブサーバーを開けません %s: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "ジョブパイプ作成中" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "ジョブパイプ複製中" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" -msgstr "jobserver パイプの初期化" +msgstr "ジョブサーバー パイプの初期化" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" -msgstr "ジョブサーバへの write" +msgstr "ジョブサーバーへの write" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "ジョブサーバーがシャットダウンしました" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "ジョブのパイプの pselect" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "ジョブのパイプの read" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "無効な --sync-mutex 文字列 '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "出力同期 mutex を開くことができません %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "makefile '%s' の読み込み中" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (デフォルトの最終ターゲットがありません)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (探索パス)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (気にしなくてよい)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (~ の展開なし)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "makefile バッファの中の UTF-8 BOM をスキップします\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "最初のターゲットより前にレシピがあります" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "レシピの前のルールが不足しています" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "分離記号を欠いています" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "ターゲットパターンを欠いています" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "複数のターゲットパターンです" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "ターゲットパターンが '%%' を含んでいません" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "'endif' が欠落しています" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "空の変数名" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "'define' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef' を欠いており, 'define' が終了していません" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "'endef' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "'%s' 疑似命令の後ろに無関係な文字列があります" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "無関係な '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "一つの条件部につき一つしか 'else' を使えません" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "ターゲット特有の変数定義が異常です" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT は必要条件を持ちません" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT はコマンドを持ちません" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "必要条件をレシピ内で定義できません" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "グループ化したターゲットはレシピを供給する必要があります" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "暗黙ルールと静的パターンルールが混ざりました" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "暗黙ルールと通常ルールが混ざりました" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "ターゲット '%s' はターゲットパターンと一致しません" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "ターゲットファイル '%s' が : と :: 項目の両方を持っています" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "ターゲット '%s' が同一ルール内で複数回与えられました" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告: ターゲット '%s' のためのレシピを置き換えます" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告: ターゲット '%s' のための古いレシピは無視されます" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 暗黙ルールと通常ルールが混ざりました: 推奨されない文法" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告: ターゲット '%s' のグループメンバーシップを上書きします" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "'%s' に対して行うべき事はありません." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' は更新済みです." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "ファイル '%s' の依存関係を整理しています.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sターゲット '%s' を make するルールがありません%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "ファイル '%s' を検討しています.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近ファイル '%s' の更新を試して失敗しています.\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "ファイル '%s' は検討済みです.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "ファイル '%s' の更新をしています.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "ファイル '%s' の更新が終了しました.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "ファイル '%s' が存在しません.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1677,147 +1876,142 @@ msgstr "" "*** 警告: .LOW_RESOLUTION_TIME ファイル '%s' が高解像度タイムスタンプを持って" "います" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "'%s' 用のデフォルトレシピを使用します.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "循環 %s <- %s 依存関係が破棄されました." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "ターゲットファイル '%s' の必要条件を満たしました.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "'%s' の必要条件を make します.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "ターゲットファイル '%s' を諦めます.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "ターゲット '%s' はエラーにより 再make できませんでした." -#: src/remake.c:751 +#: src/remake.c:814 #, 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:819 #, 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:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "必要条件 '%s' はターゲット '%s' よりも新しい.\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "必要条件 '%s' はターゲット '%s' よりも古い.\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "ターゲット '%s' はダブルコロンで, かつ必要条件を持たない.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "'%s' のためのレシピが無く, 必要条件は実際には変更されませんでした.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "always-make フラグが立っているので '%s' を make します.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "ターゲット '%s' を再make する必要はありません" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH 名 '%s' を使用します" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "ターゲット '%s' を再make する必要があります.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH 名 '%s' を無視します.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "'%s' のレシピを実行中です.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "ターゲットファイル '%s' の再make に失敗しました.\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "ターゲットファイル '%s' の再 make に成功しました.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "'%s' のためのデフォルトのコマンドを使います.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告: ファイル '%s' の修正時刻 %s は未来の時刻です" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2019,7 @@ msgstr "" "\n" "# 暗黙ルール" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1833,7 +2027,7 @@ msgstr "" "\n" "# 暗黙ルールなし." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1842,11 +2036,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 +2259,44 @@ msgstr "" "# ハッシュテーブルの状態:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "自動変数" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "デフォルト" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "環境変数" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile 変数" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "-e オプションで指定した環境変数" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "コマンドライン変数" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "'override' 疑似命令" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (ファイル '%s', %lu 行目)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# 変数セットのハッシュテーブルの状態:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2105,7 +2304,7 @@ msgstr "" "\n" "# 変数\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2113,7 +2312,7 @@ msgstr "" "\n" "# パターン指定 変数 値" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2121,7 +2320,7 @@ msgstr "" "\n" "# パターン指定変数の値なし." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2130,7 +2329,7 @@ msgstr "" "\n" "# %u 個のパターン指定変数の値" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "警告: 未定義の変数 '%.*s'" @@ -2156,22 +2355,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2179,11 +2378,11 @@ msgstr "" "\n" "# VPATH 探索パス\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# 'vpath' 探索パスはありません." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2192,7 +2391,7 @@ msgstr "" "\n" "# %u つの 'vpath' 探索パス.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2200,7 +2399,7 @@ msgstr "" "\n" "# 一般の ('VPATH' 変数) 探索パスなし." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2210,37 +2409,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" +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)" +msgstr "内部エラー: ジョブサーバー セマフォを開けません '%s': (エラー %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" -msgstr "jobserver クライアント (セマフォ %s)\n" +msgstr "ジョブサーバークライアント (セマフォ %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" -msgstr "ジョブサーバのセマフォを解放します: (エラー %ld: %s)" +msgstr "ジョブサーバーのセマフォを解放します: (エラー %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "セマフォ または 子プロセスを待っています: (エラー %ld: %s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "出力同期 mutex を解析することができません %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "無効な出力同期 mutex: %s" + +#~ 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 258d32aa114bab7472904031400657901bc30cd0..c2af28d3f184f48c6aadc3e91c1521cdc7589bd4 100644 GIT binary patch delta 15016 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 CSA$jn delta 10823 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 MJlw2RV87P)KkgP2ZvX%Q diff --git a/po/ko.po b/po/ko.po index c0481ac..37b2faf 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. # # 용어 # - recipe - 명령 (make의 action으로 실행할 명령어를 말함) @@ -15,10 +15,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.2.93\n" +"Project-Id-Version: GNU 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 23:07+0900\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 23:09+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:1107 msgid "" "\n" "# Directories\n" @@ -142,221 +147,251 @@ msgstr "" "\n" "# 디렉터리\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (키 %s, 변경시각 %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (장치 %d, 아이노드 [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "0개" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " 파일, " # 여기서 no는 "no impossibilities"라고 쓰인다. 궁극적으로 msgid가 고쳐져야 함 -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "0개" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " 불가능" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " 지금까지." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "파일 '%s'의 %s:%lu에서 명령을 지정했습니다." -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "파일 '%s'에 대한 명령을 묵시적 규칙 탐색으로 찾았습니다." -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "하지만 '%s' 파일은 이제 '%s'ê³¼(와) 같은 파일로 간주합니다." -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "단일 콜론 '%s'을(를) 이중 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "이중 콜론 '%s'을(를) 단일 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 중간 파일 '%s'을(를) 삭제합니다" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "중간 파일을 제거합니다...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .INTERMEDIATE이 될 수 없습니다" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .SECONDARY가 될 수 없습니다." + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 및 .SECONDARY는 같이 쓸 수 없습니다." + +#: src/file.c:942 msgid "Current time" msgstr "현재 시각" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: 타임스탬프가 범위를 벗어나므로, %s을(를) 대체합니다" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# 타겟이 아님:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 프레시어스 파일 (.PRECIOUS의 선행조건)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 포니 타겟 (.PHONY의 선행조건)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# 명령행 타겟." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# 기본 메이크파일, MAKEFILES 메이크파일, 또는 -include/sinclude 메이크파일." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# 내장 규칙" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# 묵시적 규칙 탐색이 완료되었습니다." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# 묵시적 규칙 탐색이 완료되지 않았습니다." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 묵시적/고정 패턴 스템: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# 파일이 중간단계의 선행조건입니다." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 파일이 .NOTINTERMEDIATE의 선행조건입니다." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 파일이 부수적입니다 (.SECONDARY의 선행조건)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# 다음도 만듭니다:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# 변경 시각이 결코 검사되지 않았음." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# 파일이 없습니다." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# 파일이 매우 오래되었습니다." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# 마지막 변경 %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# 파일을 업데이트했습니다." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# 파일을 업데이트하지 않았습니다." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 현재 실행중인 명령(이것은 버그입니다)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 현재 실행중인 의존성(이것은 버그입니다)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# 성공적으로 업데이트." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# 업데이트 필요(-q 설정됨)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# 업데이트 실패." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_status' 멤버에 값이 잘못되었습니다!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -364,7 +399,7 @@ msgstr "" "\n" "# 파일" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -374,124 +409,142 @@ msgstr "" "# 파일 해시 테이블 통계:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: 파일 이름이 없습니다" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: 인자가 너무 많습니다" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 올바르지 않은 파일 동작: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "이 플랫폼에서는 구현되지 않았습니다: '%s' 함수" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "함수 '%s'에 대해 종료되지 않은 호출: '%c' 문자가 빠졌음" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "빈 함수 이름" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "잘못된 함수 이름: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "함수 이름이 너무 깁니다: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최소 인자 갯수(%1$u)가 잘못되었습니다" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최대 인자 갯수(%1$u)가 잘못되었습니다" @@ -581,137 +634,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:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "'%s' 규칙에 대한 묵시적 규칙의 재귀를 피함.\n" + +#: src/implicit.c:451 #, 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:501 #, 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:506 #, 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:768 #, 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:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "규칙 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "묵시적 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s'이(가) 있어야 합니다.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' 발견.\n" + +#: src/implicit.c:842 #, 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:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s'에서 선행조건 '%1$s'을(를) 찾았습니다.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "명시적 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" + +#: src/implicit.c:886 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" -msgstr "중간 파일 '%s'에 대한 묵시적 규칙을 찾고 있습니다.\n" +msgstr "중간 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "불가능한 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' 찾을 수 없습니다.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s'에 대한 묵시적 규칙 '%1$s' 찾았습니다.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s'에 대한 호환 규칙을 찾고 있습니다.\n" -#: src/job.c:370 -msgid "Cannot create a temporary file\n" -msgstr "임시 파일을 만들 수 없습니다\n" +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s'에 대한 묵시적 규칙이 없습니다.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "임시 파일을 만들 수 없습니다" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (메모리 덤프됨)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (무시됨)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<내장>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 끝나지 않은 작업을 기다리고 있습니다...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (원격)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "성공한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "실패한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "임시 배치 파일 %s을(를) 지웁니다\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "임시 배치 파일 %s 지우기가 실패했습니다(%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -720,87 +833,86 @@ msgstr "" "\n" "실행 실패에서 인수 %d개\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "하위 프로세스 %p(%s)에서 토큰을 받았습니다.\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: '%s' 타겟이 없습니다" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: '%s' 타겟 업데이트, 이유: %s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "타겟이 없습니다" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "이 운영 체제에서는 부하 제한을 강제할 수 없습니다" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "부하 제한을 강제할 수 없습니다: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" -msgstr "표준 입력을 복구할 수 없습니다\n" +msgid "Could not restore stdin" +msgstr "표준 입력을 복구할 수 없습니다" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" -msgstr "표준 출력을 복구할 수 없습니다\n" +msgid "Could not restore stdout" +msgstr "표준 출력을 복구할 수 없습니다" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" -msgstr "표준 오류를 복구할 수 없습니다\n" +msgid "Could not restore stderr" +msgstr "표준 오류를 복구할 수 없습니다" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 환경 변수 공간이 바닥났을 수 있습니다" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "임시 배치 파일 %s을(를) 만듭니다\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -809,7 +921,7 @@ msgstr "" "배치 파일 내용:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -819,7 +931,7 @@ msgstr "" "\t%s\n" # ??? 디버깅 메세지 -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d번째 줄) 잘못된 쉘 컨텍스트 (!unixy && !batch_mode_shell)\n" @@ -829,44 +941,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 "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' 작업은 이 플랫폼에서 지원되지 않습니다." +msgid "The 'load' operation is not supported on this platform" +msgstr "'load' 작업은 이 플랫폼에서 지원되지 않습니다" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "옵션:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 무시됩니다, 호환을 위해 유지.\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 조건에 관계 없이 모든 타겟을 만듭니다.\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -874,17 +996,17 @@ msgstr "" " -C <디렉터리>, --directory=<디렉터리>\n" " 뭔가 하기 전에 <디렉터리>로 이동합니다.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=플래그] 여러 가지 종류의 디버깅 정보를 출력합니다.\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -892,14 +1014,14 @@ msgstr "" " -e, --environment-overrides\n" " 환경변수가 메이크파일 내용에 우선합니다.\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E <문자열>, --eval=<문자열>\n" " <문자열>을 메이크파일 내용으로 해석합니다.\n" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -907,15 +1029,15 @@ msgstr "" " -f <파일>, --file=<파일>, --makefile=<파일>\n" " <파일>을 메이크파일로 읽습니다.\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 이 메시지를 출력하고 끝냅니다.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 명령에서 발생하는 오류를 무시합니다.\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -923,7 +1045,7 @@ msgstr "" " -I <디렉터리>, --include-dir=<디렉터리>\n" " 포함할 메이크파일을 <디렉터리>에서 찾습니다.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -931,13 +1053,17 @@ msgstr "" " -j [N], --jobs[=N] 동시에 N개의 작업 허용, 인자 없으면 무한대로 허" "용.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=<스타일> 작업서버가 사용할 스타일을 선택합니다.\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1073,7 @@ msgstr "" " 로드가 N 아래로 내려가야 동시 작업 시작합니" "다.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1081,7 @@ msgstr "" " -L, --check-symlink-times 심볼릭 링크와 실제 중 더 최근 수정 시각을\n" " 사용합니다.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1091,7 @@ msgstr "" " 실제로는 아무 명령도 실행하지 않고 표시만 합니" "다.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -976,7 +1102,7 @@ msgstr "" "지\n" " 않습니다.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,11 +1110,11 @@ msgstr "" " -O[방식], --output-sync[=방식]\n" " 병렬 작업의 출력을 <방식>에 따라 맞춥니다.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -996,24 +1122,32 @@ msgstr "" " -q, --question 명령을 실행하지 않음. 종료 상태로 업데이트\n" " 여부를 알 수 있습니다.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={<시드>|random|reverse|none}]\n" +" 선행조건과 타겟을 무작위로 뒤섞습니다.\n" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 명령어를 출력하지 않습니다.\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent 명령어를 출력합니다. (--silent 모드 끄기)\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,31 +1155,31 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k 옵션을 끕니다.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch 타겟을 다시 만들지 않고 touch만 합니다.\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace 추적 정보를 표시합니다.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version make의 버전 번호를 출력하고 끝냅니다.\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n" -#: src/main.c:403 +#: src/main.c:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1054,34 +1188,67 @@ msgstr "" " <파일>을 무한히 계속 새로운 것으로 취급합니" "다.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 정의되지 않은 변수를 참조할 때 경고를 냅니다.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "쓰기 오류: 표준 출력" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "빈 문자열은 파일 이름으로 부적절합니다" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "디버깅 단계 지정 '%s'이(가) 잘못되었습니다" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "알 수 없는 output-sync 방식 '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "사용법: %s [옵션] [타겟] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"이 프로그램은 %s에서 사용하도록 빌드되었습니다\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"이 프로그램은 %s(%s)에서 사용하도록 빌드되었습니다\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "문제점을 로 알려 주십시오.\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1096,27 +1263,31 @@ msgstr "" "예외플래그 = %lx\n" "예외주소 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "접근 권한 위반: 주소 0x%p에 쓰기\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (임시 파일): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1124,175 +1295,165 @@ msgstr "" "경고: 작업서버를 사용할 수 없습니다: -j1을 사용합니다. 상위 메이크 규칙에 " "'+'를 추가합니다." -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "경고: 파생된 메이크에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합" "니다." -#: src/main.c:1781 +#: src/main.c:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite(임시 파일)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 임시 파일 %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "경고: 메이크파일에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합니" "다." -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "병렬 작업(-j)은 이 플랫폼에서 지원하지 않습니다." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "단일 작업 (-j1) 모드로 돌아갑니다." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "작업 서버 컨트롤러 %s 사용합니다\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "출력 동기화 뮤텍스 %s 사용\n" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "심볼릭 링크를 지원하지 않습니다: -L 옵션을 끕니다." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "뒤섞기 모드 사용: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "메이크파일을 업데이트하고 있습니다....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "메이크파일 '%s'은(는) 반복할 수 있으므로, 다시 만들지 않습니다.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 읽어들이는데 실패" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "'%s' 메이크파일을 다시 만드는데 실패." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "포함된 메이크파일 '%s'을(를) 찾지 못했습니다." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "메이크파일 '%s'을(를) 찾지 못했습니다" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 안에 타겟이 여러 개 들어 있습니다" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "타겟 없음" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "타겟이 지정되지 않았고 메이크파일이 없습니다" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "최종 타겟을 갱신합니다....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' 옵션은 비어 있지 않은 문자열 인수가 필요합니다" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' 옵션은 0보다 큰 정수 인수가 필요합니다" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%s%s 빌드\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s%s(%s) 빌드\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1301,7 +1462,7 @@ msgstr "" "\n" "# 메이크 데이터베이스, %s에 표시" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1310,383 +1471,413 @@ msgstr "" "\n" "# 메이크 데이터베이스 마침, %s에서\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s 값 %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 값 %s: 디렉터리가 아닙니다" + +#: src/misc.c:613 #, 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "%s 임시 파일 만들기: %s" -#: src/misc.c:743 -msgid "User access" -msgstr "사용자 접근" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "임시 파일 %s 삭제: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "메이크 접근" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 임시 파일 %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "하위 접근" +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: 임시 파일 %s: %s" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "쓰기 오류: 표준 출력" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "경고: 출력 잠금을 얻을 수 없으므로, 출력 동기화를 사용하지 않습니다." -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". 멈춤.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "%s 작업서버를 열 수 없습니다: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "작업 파이프 생성" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "작업 파이프 dup() 수행" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, 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:363 msgid "write jobserver" msgstr "작업서버 쓰기" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "작업 서버가 꺼졌습니다" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect 작업 파이프" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "작업 파이프 읽기" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "잘못된 --sync-mutex 문자열 '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "%s 출력 동기화 뮤텍스를 열 수 없습니다: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "'%s' 메이크파일을 읽고 있습니다" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (최종 타겟이 없음)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (탐색 경로)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (상관 안함)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (~ 확장 없음)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "메이크파일 '%s'에서 UTF-8 BOM 무시\n" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "메이크파일 버퍼에서 UTF-8 BOM 무시\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "첫번째 타겟보다 앞에서 명령어가 시작되었습니다" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "명령 앞에 규칙이 빠졌음" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "분리 기호가 빠졌음" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "타겟 패턴이 빠졌음" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "다중 타겟 패턴" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "타겟 패턴에 '%%'가 없습니다." -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "'endif'가 빠졌음" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "빈 변수 이름" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "'define' 지시자 뒤에 필요 없는 텍스트 있음" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "'endef'가 빠졌음. 'define'을 마치지 않았습니다" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "'endef' 지시자 뒤에 필요 없는 텍스트가 있음" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "'%s' 지시자 뒤에 필요 없는 텍스트가 있음" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "필요 없는 '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "한 개의 조건에는 한 개의 'else'만 있어야 합니다" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "타겟별 변수 정의 형식이 틀렸습니다" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT에는 선행 조건이 있으면 안 됩니다" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT에는 명령어가 있으면 안 됩니다" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "명령어에서 선행조건을 정의할 수 없습니다" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "그룹 타겟은 명령어를 제공해야 합니다" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "묵시적 패턴 룰과 고정된 패턴룰이 섞였습니다" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "혼합된 묵시적 규칙과 일반적 규칙" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "타겟 '%s'은(는) 타겟 패턴에 맞지 않습니다" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "타겟 파일 '%s'은(는) :와 :: 항목을 동시에 갖고 있습니다" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "타겟 '%s'이(가) 같은 규칙에서 여러 번 주어졌습니다" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "경고: 타겟 '%s'에 대한 명령보다 우선합니다" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "경고: 타겟 '%s'에 대한 과거 명령을 무시합니다" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 혼합된 묵시적 규칙과 일반적 규칙: 추천하지 않는 문법입니다" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "경고: 타겟 '%s'의 그룹 소속보다 우선합니다" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "'%s'을(를) 위해 할 일이 없습니다." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s'은(는) 이미 업데이트되었습니다." # prune이 truncate의 의미인가 지운다는 의미인가?? -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "'%s' 파일을 잘라냅니다.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s타겟 '%s'을(를) 만들 규칙이 없습니다%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "'%s' 타겟 파일을 고려합니다.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "최근에 '%s' 파일 업데이트를 시도해 실패했습니다.\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "'%s' 파일은 이미 검토했습니다.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "아직 '%s' 파일을 업데이트하고 있습니다.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "'%s' 파일의 업데이트를 마쳤습니다.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "'%s' 파일이 없습니다.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1694,148 +1885,142 @@ msgstr "" "*** Warning: .LOW_RESOLUTION_TIME 파일 '%s'에 고해상도 타임 스탬프가 들어 있" "습니다" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "'%s'에 대해 기본 명령 사용.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "%s <- %s 상호 의존성은 무시됩니다." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "타겟 파일 '%s'의 선행조건을 마쳤습니다.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "'%s'의 선행조건이 만들어지고 있습니다.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "타겟 파일 '%s'을(를) 포기합니다.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "오류로 '%s' 타겟을 다시 만들지 못했습니다." -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "'%s' 선행 조건은 '%s' 타겟에 대해 순서만 선행 조건입니다.\n" -#: src/remake.c:756 +#: src/remake.c:819 #, 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:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "'%s' 선행 조건이 '%s' 타겟보다 나중에 만들어졌습니다.\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "'%s' 선행 조건이 '%s' 타겟보다 먼저 만들어졌습니다.\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "'%s' 타겟은 콜론 두 개가 붙었고 선행조건이 없습니다.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "'%s'에 대한 명령어가 없고 어떤 선행조건도 실제로 바뀌지 않았습니다.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "always-make 옵션 때문에 '%s' 타겟을 만듭니다.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "'%s' 타겟을 다시 만들 필요가 없습니다" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH 이름 '%s'을(를) 사용합니다" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "'%s' 타겟을 다시 만들어야 합니다.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH 이름 '%s'을(를) 무시합니다.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "'%s'의 명령이 실행 중입니다.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "'%s' 타겟 파일을 다시 만드는데 실패했습니다.\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "'%s' 타겟 파일을 성공적으로 다시 만들었습니다.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "'%s' 타겟 파일을 -q 옵션으로 다시 만들어야 합니다.\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "'%s'에 대해 기본 명령을 사용.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "경고: '%s' 파일의 변경 시각(%s)이 미래입니다" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2028,7 @@ msgstr "" "\n" "# 묵시적 규칙" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1851,7 +2036,7 @@ msgstr "" "\n" "# 묵시적 규칙 없음." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1860,11 +2045,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 +2266,44 @@ msgstr "" "# 해시 테이블 통계:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "자동" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "기본값" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "환경" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "메이크파일" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "-e 하의 환경" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "명령행" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "'override' 지시자" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " ('%s'에서, %lu번째 줄)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# 변수 모음 해시 테이블 통계:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2121,7 +2311,7 @@ msgstr "" "\n" "# 변수\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2129,7 +2319,7 @@ msgstr "" "\n" "# 패턴을 위한 변수 값" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2137,7 +2327,7 @@ msgstr "" "\n" "# 패턴을 위한 변수 값이 없습니다." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2146,7 +2336,7 @@ msgstr "" "\n" "# 특정 패턴을 위한 변수 값 %u개" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "경고: 정의되지 않은 변수 '%.*s'" @@ -2172,22 +2362,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2195,11 +2385,11 @@ msgstr "" "\n" "# VPATH 탐색 경로\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# 'vpath' 탐색 경로가 없음." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2208,7 +2398,7 @@ msgstr "" "\n" "# 'vpath' 탐색 경로 %u개.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2216,7 +2406,7 @@ msgstr "" "\n" "# 일반적인 ('VPATH' 변수) 탐색 경로가 없음." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2226,33 +2416,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" -#: 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)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "작업 서버 클라이언트(세마포어 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "작업 서버 세마포어 해제: (오류 %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "세마포어 또는 하위 프로세스 대기: (오류 %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "출력 동기화 뮤텍스를 (%s) 파싱할 수 없습니다: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "잘못된 출력 동기화 뮤텍스: %s" diff --git a/po/lt.gmo b/po/lt.gmo index baab5047acc86f1942a9ec8555869dbb63c2965c..c6ac4e684e784a0d53f093ec624e4d2457a31caa 100644 GIT binary patch delta 1936 zcmYk-X-Jeo9LMn~*IiT7GIh-kcPlGX+w#aREA7zAv@AP}l8V4yL_t`P#RF1AL>G&% zI-w|{1IiZ}6hT2@ftd(FP=q8U9TZW*g33=gfcR*&Up9v)Fl`;%YUN zdSWc`b*M28K8$5YY4;eDj1MplJ8&d+V;X+MaTvlen88IpEW%+}hZC>?6R`z{<7v#) zt1eJU;Xpg;!7nih-yxg%%5DVy#%y%+R2|R55-dhtzZ)~~5PGo{N8@c&2cKgq_Tgj< z;WQ1^A0IhUg%dfk&3Y8|z#FKMJwavSJ*orW(TxMB5&lI#`V)-F#l@%&?6Dq4z4(gt z1!gPNKdI0e<0U^-jUV-*eAMw$)QBoJ5VWYMmBT7wr`>C>qO0MFQ%i?rVMyd1DS!G zGKHv)mSZd@wxcrAIFkG;15KTo~m{y`)e#^Z2wJe4%mi6X4R1*nXiKxN{xwH@`qF4V|B*>)@!&!jyT z3$YrNxfaaBtEhpzMlH$^Y5-0u6RDn*pyq5TYAsabB&@R@#Obszp&s06kN-f8IE`NE z1@o;tQ7Jx!%FH>`S9Bfevw0e6JLU})jrct;W&;5p43j?U8M(^vm`ZHB#N}10V8iQ-*qQJ!&L- zQ7PPq`oTJeLvSupMktFa8;DAxS`Ay~p|YS-L|!~qIf5P6UWU&W76;z4#CGb9G_!4x)>aT*_eZ6=-^UJ z!U>D5hXLeu6Q~)}zkT7{S0z)Qz8FD)u3NCWX5U!*m>vU!cZoa2hT{UB4Yi<3Y^C zGnj=}P!s$IM`6NH?t$4@s8lOx=mS4~hOO2ks2ld6GW#1SBz zz#?owO<;%h80x`YSb|T~SE;k8i!z&yOwz1HJ~JWI1An#S+fbS9vHcD#qJIwgGY>hb zw7sYazC$H2gh4mvq59RR>l-mTlEwxaatmq#`%sx3Mz(`FjwEePVIiJF{>%eTF6>3^ zg;$u1DXfPoQjEH;9yOuW$hI+SQA-|3rT!XdWk74Z6*ZCls3qw@Hi_v%WquD;;#bI@ z8BKZA&qsZ)3bod&F#~@=WxNZO$O+WVmJJcc#& z|3Fn_FegLoeTgOXvw6C1T!s3)8I|!))aPeW4|-%xWA>_a8B(FBsidLTYY~#9S#SHT zsLC9|d_0P*hPi6JkDBNU)KU##p_N%4YR&67=?AR|dA8YXJ%F0PX-v}l{}&Byjvmwv zFXKeKjVkF-%A-wMfLfYK)_PQF14va(JE~%5QP*FvMbKTXn%7{V4`$M~b z4zYsxp3ojx+_oVxGrgA9Dq=ZNN9b7Ec_?wBtEk+G{NxQgE57$rs@3jlQtAp(PmJRMNRFE; diff --git a/po/lt.po b/po/lt.po index c47ea36..86d078a 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: 2022-10-31 02:23-0400\n" "PO-Revision-Date: 2008-05-17 21:42+0300\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" @@ -20,32 +20,32 @@ msgstr "" "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:1107 msgid "" "\n" "# Directories\n" @@ -135,230 +140,260 @@ msgstr "" "\n" "# Aplankai\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1131 #, 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:1155 +#, 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:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Ne" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " failai, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "ne" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " negalimybės" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " kol kas." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:407 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Trinamas tarpinis failas „%s“" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Å alinami tarpiniai failai...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Dabartinis laikas" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Ne tikslas:" -#: src/file.c:1021 +#: src/file.c:1094 #, fuzzy msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Brangus failas (reikalingas .PRECIOUS)" -#: src/file.c:1023 +#: src/file.c:1096 #, fuzzy msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Keistas tikslas (reikalingas .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 #, fuzzy msgid "# Command line target." msgstr "# Komandinės eilutės tikslas" -#: src/file.c:1027 +#: src/file.c:1100 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:1102 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Nėra neiÅ¡reikÅ¡tinių taisyklių." -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka atlikta." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka neatlikta." -#: src/file.c:1034 +#: src/file.c:1107 #, 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:1109 #, fuzzy msgid "# File is an intermediate prerequisite." msgstr "# Failas yra tarpinė sąlyga" -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Brangus failas (reikalingas .PRECIOUS)" + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Keistas tikslas (reikalingas .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Taip pat sukuria:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Modifikacijos laikas niekada netikrintas." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Failas neegzistuoja." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Failas labai senas." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Paskutinį kartą pakeista %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Failas atnaujintas." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Failas nebuvo atnaujintas." -#: src/file.c:1062 +#: src/file.c:1139 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Dabar vykdomos komandos (TAI KLAIDA)." -#: src/file.c:1065 +#: src/file.c:1142 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Sėkmingai atnaujinta." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Turi bÅ«ti atnaujinta (-q nustatyta)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Nepavyko atnaujinti." -#: src/file.c:1086 +#: src/file.c:1163 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Netaisyklinga reikÅ¡mė „command_state“ naryje!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -366,7 +401,7 @@ msgstr "" "\n" "# Failai" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -376,124 +411,142 @@ msgstr "" "# failų maiÅ¡os lentelės statistika:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" msgstr "" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" msgstr "" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: 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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, fuzzy, c-format msgid "write: %s: %s" msgstr "raÅ¡ymo klaida: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: netaisyklingas argumentas -- %c\n" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" @@ -583,235 +636,295 @@ 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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:451 #, c-format -msgid "Avoiding implicit rule recursion.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:484 +#: src/implicit.c:501 #, 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:506 #, 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:768 #, 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:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 #, 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 "" -#: src/implicit.c:786 +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinė taisyklė tikslui „%s“.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinė taisyklė tikslui „%s“.\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 #, fuzzy msgid "" msgstr " (integruota)" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:966 #, 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:972 #, 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:1083 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1146 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1583 src/job.c:2497 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1587 src/job.c:2501 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1650 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Failas neegzistuoja." + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2106 #, fuzzy msgid "cannot enforce load limit: " msgstr "%s: nepayko pakeisti limito: %s" -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2530 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -821,221 +934,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:317 msgid "Options:\n" msgstr "" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:350 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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:355 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:358 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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:368 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:370 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:392 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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "raÅ¡ymo klaida: %s" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "negalimas tuščias failo pavadinimas" -#: src/main.c:754 +#: src/main.c:834 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "nežinomas debug lygio specifikacija „%s“" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s sistemai\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s (%s) sistemai\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "PraneÅ¡kite apie klaidas adresu \n" + +#: src/main.c:940 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:947 #, c-format msgid "" "\n" @@ -1045,730 +1211,748 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:956 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1028 src/main.c:1042 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1098 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1781 +#: src/main.c:1930 #, 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)" -msgstr "" - -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Atnaujinami „make“ failai....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/main.c:2323 +#: src/main.c:2548 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "„Make“ failas „%s“ nerastas" -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Nepavyko grįžti į pirminį aplanką." -#: src/main.c:2402 +#: src/main.c:2708 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "" - -#: src/main.c:2555 +#: src/main.c:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Nėra tikslų" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Nenurodyta tikslų ir nerasta „make“ failų" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Atnaujinami tikslai...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sÅ i programa sukompiliuota %s sistemai\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 #, 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:3682 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Pabaiga.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "" -#: src/posixos.c:119 +#: src/posixos.c:261 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "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" -msgstr "" - -#: src/posixos.c:186 +#: src/posixos.c:363 #, fuzzy msgid "write jobserver" msgstr "raÅ¡ymo klaida: %s" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "Skaitomas „make“ failas „%s“" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (nėra numatytojo tikslo)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (paieÅ¡kos kelias)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (nesvarbu)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (nėra ~ iÅ¡plėtimo)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komandos prasideda prieÅ¡ pirmąjį tikslą" -#: src/read.c:1035 +#: src/read.c:1053 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "trÅ«ksta taisyklės prieÅ¡ komandas" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, fuzzy, c-format msgid "missing separator" msgstr "trÅ«ksta skirtuko%s" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "trÅ«ksta tikslo Å¡ablono" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "keli tikslo Å¡ablonai" -#: src/read.c:1289 +#: src/read.c:1306 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "tikslo Å¡ablone nėra „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, 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:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "tuščias kintamojo pavadinimas" -#: src/read.c:1478 +#: src/read.c:1423 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "Perteklinis tekstas po „endef“ direktyvos" -#: src/read.c:1503 +#: src/read.c:1448 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "trÅ«ksta „endef“, nebaigtas „define“" -#: src/read.c:1531 +#: src/read.c:1476 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "Perteklinis tekstas po „endef“ direktyvos" -#: src/read.c:1603 +#: src/read.c:1548 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "Perteklinis tekstas po „%s“ direktyvos" -#: src/read.c:1604 +#: src/read.c:1549 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "perteklinis „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, fuzzy, c-format msgid "Nothing to be done for '%s'." msgstr "Nėra ką daryti su „%s“." -#: src/remake.c:227 +#: src/remake.c:255 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "„%s“ atnaujinti nereikia." -#: src/remake.c:323 +#: src/remake.c:350 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Vis dar atnaujinamas failas „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, fuzzy, c-format msgid "Considering target file '%s'.\n" msgstr "Svarstomas tikslo failas „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, fuzzy, c-format msgid "File '%s' was considered already.\n" msgstr "Failas „%s“ jau apsvarstytas.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "Vis dar atnaujinamas failas „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, fuzzy, c-format msgid "Finished updating file '%s'.\n" msgstr "Baigtas atnaujinti failas „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "Failas „%s“ neegzistuoja.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 #, 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 -#, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:674 +#: src/remake.c:737 #, fuzzy, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Svarstomas tikslo failas „%s“.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:694 +#: src/remake.c:757 #, fuzzy, c-format msgid "Giving up on target file '%s'.\n" msgstr "Svarstomas tikslo failas „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:819 #, 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:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:865 #, fuzzy, c-format msgid "No need to remake target '%s'" msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:891 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:906 #, fuzzy, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Vykdomos „%s“ komandos.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, fuzzy, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/remake.c:849 +#: src/remake.c:916 #, fuzzy, c-format msgid "Successfully remade target file '%s'.\n" msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1118 #, fuzzy, c-format msgid "Using default commands for '%s'.\n" msgstr "paskutinė komanda: %s\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +1960,7 @@ msgstr "" "\n" "# NeiÅ¡reikÅ¡tinės taisyklės" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1784,7 +1968,7 @@ msgstr "" "\n" "# Nėra neiÅ¡reikÅ¡tinių taisyklių." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1793,11 +1977,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,71 +2197,71 @@ msgstr "" "# failų maiÅ¡os lentelės statistika:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1801 #, fuzzy msgid "command line" msgstr "%s: komanda nerasta" -#: src/variable.c:1671 +#: src/variable.c:1804 #, fuzzy msgid "'override' directive" msgstr "tuščia „override“ direktyva" -#: src/variable.c:1682 +#: src/variable.c:1814 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (nuo „%s“, %lu eilutė):\n" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" msgstr "" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 +#: src/variable.h:237 #, fuzzy, c-format msgid "warning: undefined variable '%.*s'" msgstr "%s: neatpažintas argumentas „%c%s“\n" @@ -2097,83 +2286,93 @@ 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:600 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:617 #, fuzzy msgid "# No 'vpath' search paths." msgstr " (paieÅ¡kos kelias)" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:628 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# Netaisyklinga reikÅ¡mė „update_status“ naryje!" @@ -2189,6 +2388,9 @@ msgstr "" #~ msgid "virtual memory exhausted" #~ msgstr "baigėsi virtuali atmintis" +#~ 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" diff --git a/po/make.pot b/po/make.pot index 73f64ae..bfdd5b3 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\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2020-01-19 15:34-0500\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\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,415 +62,468 @@ 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:1107 msgid "" "\n" "# Directories\n" msgstr "" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1094 +#: src/dir.c:1126 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1099 +#: src/dir.c:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr "" -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr "" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr "" -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:290 +#: src/file.c:284 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:310 +#: src/file.c:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "" -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1117 msgid "# Also makes:" msgstr "" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "" -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "" -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "" -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "" -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "" -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" msgstr "" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1119 +#: src/file.c:1196 #, 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:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" msgstr "" -#: src/function.c:799 +#: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" msgstr "" -#: src/function.c:819 -msgid "non-numeric first argument to 'wordlist' function" +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" msgstr "" -#: src/function.c:821 -msgid "non-numeric second argument to 'wordlist' function" +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" @@ -560,233 +613,292 @@ 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:326 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:506 #, 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:768 #, 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:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 #, 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:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:380 +msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr "" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr "" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1071 +#: src/job.c:1083 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1120 +#: src/job.c:1146 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1575 src/job.c:2487 +#: src/job.c:1583 src/job.c:2497 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1579 src/job.c:2491 +#: src/job.c:1587 src/job.c:2501 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1642 +#: src/job.c:1650 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1875 +#: src/job.c:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1902 +#: src/job.c:1909 #, c-format -msgid "%s: target '%s' does not exist" +msgid "%s: update target '%s' due to: %s" msgstr "" -#: src/job.c:1905 -#, c-format -msgid "%s: update target '%s' due to: %s" +#: src/job.c:1910 +msgid "target does not exist" msgstr "" -#: src/job.c:2108 +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" +msgid "Could not restore stdin" msgstr "" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" +msgid "Could not restore stdout" msgstr "" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" +msgid "Could not restore stderr" msgstr "" -#: src/job.c:2520 +#: src/job.c:2530 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2623 +#: src/job.c:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2862 +#: src/job.c:2869 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "" -#: src/job.c:3300 src/job.c:3485 +#: src/job.c:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -796,221 +908,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:317 msgid "Options:\n" msgstr "" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:350 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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:371 +#: src/main.c:355 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:358 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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:368 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:370 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:405 +#: src/main.c:392 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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" + +#: src/main.c:940 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:856 +#: src/main.c:947 #, c-format msgid "" "\n" @@ -1020,744 +1181,771 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:865 +#: src/main.c:956 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:941 src/main.c:956 +#: src/main.c:1028 src/main.c:1042 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1009 +#: src/main.c:1098 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1609 +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1781 +#: src/main.c:1930 #, c-format -msgid "Makefile from standard input specified twice." -msgstr "" - -#: src/main.c:1819 src/vmsjobs.c:1248 -msgid "fopen (temporary file)" +msgid "Makefile from standard input specified twice" msgstr "" -#: src/main.c:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2109 +#: src/main.c:2248 #, c-format -msgid "Symbolic links not supported: disabling -L." +msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2190 +#: src/main.c:2250 #, c-format -msgid "Updating makefiles....\n" +msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2226 +#: src/main.c:2255 #, 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:2327 #, c-format -msgid "Failed to remake makefile '%s'." +msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2323 +#: src/main.c:2339 #, c-format -msgid "Included makefile '%s' was not found." +msgid "Updating makefiles....\n" msgstr "" -#: src/main.c:2328 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 #, c-format -msgid "Couldn't change back to original directory." +msgid "%s: %s" msgstr "" -#: src/main.c:2402 +#: src/main.c:2476 src/read.c:970 #, c-format -msgid "Re-executing[%u]:" +msgid "%s: failed to load" msgstr "" -#: src/main.c:2522 -msgid "unlink (temporary file): " +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2555 +#: src/main.c:2548 #, 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:2552 #, c-format -msgid "No targets" +msgid "Makefile '%s' was not found" msgstr "" -#: src/main.c:2581 +#: src/main.c:2700 #, 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:2708 #, c-format -msgid "Updating goal targets....\n" +msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2610 +#: src/main.c:2863 #, 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:2887 #, c-format -msgid "Usage: %s [options] [target] ...\n" +msgid "No targets" msgstr "" -#: src/main.c:2810 +#: src/main.c:2889 #, 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:2898 #, c-format -msgid "" -"\n" -"This program built for %s (%s)\n" +msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2815 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" "# Make data base, printed on %s" msgstr "" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" "# Finished Make data base on %s\n" msgstr "" -#: src/misc.c:643 +#: src/misc.c:602 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +msgid "%s value %s: %s" msgstr "" -#: src/misc.c:664 -msgid "Initialized access" +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" msgstr "" -#: src/misc.c:743 -msgid "User access" +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" msgstr "" -#: src/misc.c:791 -msgid "Make access" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" msgstr "" -#: src/misc.c:825 -msgid "Child access" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" msgstr "" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr "" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" +msgid "Cannot open jobserver %s: %s" msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "" -#: src/posixos.c:119 +#: src/posixos.c:261 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +msgid "write jobserver" msgstr "" -#: src/posixos.c:122 +#: src/posixos.c:483 #, 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:486 +msgid "pselect jobs pipe" msgstr "" -#: src/posixos.c:186 -msgid "write jobserver" +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" msgstr "" -#: src/posixos.c:300 +#: src/posixos.c:672 #, 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:681 +#, 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:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr "" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr "" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr "" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr "" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "" -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "" -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "" -#: src/remake.c:389 +#: src/remake.c:416 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "" -#: src/remake.c:399 +#: src/remake.c:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:509 src/remake.c:1041 +#: src/remake.c:538 #, c-format -msgid "No implicit rule found for '%s'.\n" +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" msgstr "" -#: src/remake.c:515 +#: src/remake.c:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "" -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "" -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" -#: src/remake.c:756 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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,69 +2147,69 @@ msgid "" "# " msgstr "" -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr "" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" msgstr "" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" msgstr "" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." msgstr "" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "" @@ -2046,78 +2234,88 @@ 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:600 msgid "" "\n" "# VPATH Search Paths\n" msgstr "" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" "# %u 'vpath' search paths.\n" msgstr "" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." msgstr "" -#: src/vpath.c:631 +#: src/vpath.c:628 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" diff --git a/po/nl.gmo b/po/nl.gmo index 12c2d969b6670eedc1a61d530bfd70cb6532f747..163d4ac78fb79e8ebb530da82e56d565be2d0be3 100644 GIT binary patch delta 14912 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 K=U~UfWB(rj7qi&_ delta 10746 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 bemHa0ia5Jf`(n}A80+J+?P, 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -138,219 +143,250 @@ msgstr "" "\n" "# Mappen\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (sleutel %s, wijzigingstijd %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Geen" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " bestanden, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "geen" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " onmogelijkheden" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " tot nu toe." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Verwijderen van tussentijds bestand '%s'" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Verwijderen van tussentijdse bestanden...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .INTERMEDIATE zijn" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .SECONDARY zijn" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE en .SECONDARY gaan niet samen" + +#: src/file.c:942 msgid "Current time" msgstr "Huidige tijd" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Is geen doel:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Waardevol bestand (vereiste van .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Nepdoel (vereiste van .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Doel afkomstig van opdrachtregel." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Ingebouwde regel" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Impliciete regel-zoekopdracht is uitgevoerd." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Impliciete/statische patroonstam: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Bestand is een tussentijds vereiste." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Bestand is een vereiste van .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Bestand is secundair (vereiste van .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Maakt ook:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Wijzigingstijd is nooit gecontroleerd." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Bestand bestaat niet." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Bestand is erg oud." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Laatst gewijzigd %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Bestand is bijgewerkt." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Bestand is niet bijgewerkt." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Met succes bijgewerkt." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Bijwerken is mislukt." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Ongeldige waarde in 'command_state'-onderdeel!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -358,7 +394,7 @@ msgstr "" "\n" "# Bestanden" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -368,124 +404,142 @@ msgstr "" "# hashtabel-statistieken van bestanden:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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:799 +#: 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: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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: ontbrekende bestandsnaam" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: te veel argumenten" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: ongeldige bestandsbewerking: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Lege functienaam" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Ongeldige functienaam: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Functienaam is te lang: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s" @@ -577,133 +631,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:326 #, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Verwoedere poging.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Patroonregel '%s' wordt geprobeerd met stam '%.*s'.\n" -#: src/implicit.c:490 +#: src/implicit.c:506 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Patroonregel wordt geprobeerd met stam '%.*s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stam is te lang: '%s%.*s'.\n" -#: src/implicit.c:717 +#: src/implicit.c:768 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Onmogelijke regelvereiste '%s' wordt verworpen.\n" +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke regelvereiste '%s' wordt verworpen.\n" -#: src/implicit.c:718 +#: src/implicit.c:770 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n" +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:732 +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Proberen van regelvereiste '%s'.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Proberen van impliciete vereiste '%s'.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' zou moeten bestaan.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' werd gevonden.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Compatibiliteitsregel '%s' wordt gebruikt vanwege '%s'.\n" + +#: src/implicit.c:856 +#, 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:870 #, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' werd niet gevonden.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Impliciete regel '%s' voor '%s' gevonden.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Zoeken naar compatibiliteitsregel voor '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Geen impliciete regel voor '%s' gevonden.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan geen tijdelijk bestand aanmaken" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (genegeerd)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Wachten op onvoltooide taken..." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (ginds)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -712,93 +826,91 @@ msgstr "" "\n" "%d argumenten geteld bij mislukte start\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "doel bestaat niet" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "kan belastingsgrens niet afdwingen: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Maken van tijdelijk batch-bestand %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -807,7 +919,7 @@ msgstr "" "Inhoud van batch-bestand:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -816,7 +928,7 @@ msgstr "" "Inhoud van batch-bestand:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +938,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:317 msgid "Options:\n" msgstr "Opties:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m (genegeerd, maar herkend wegens " "compatibiliteit)\n" -#: src/main.c:338 +#: src/main.c:320 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:322 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:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d veel informatie weergeven voor het debuggen\n" -#: src/main.c:345 +#: src/main.c:327 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:329 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:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -906,15 +1028,15 @@ msgstr "" " het gegeven bestand als Makefile gebruiken\n" "\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,7 +1044,7 @@ msgstr "" " -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten " "Makefiles\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -930,14 +1052,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=SOORT te gebruiken soort taakserver\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1073,7 @@ msgstr "" " alleen extra taken starten als de\n" " systeembelasting lager is dan N\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -956,7 +1082,7 @@ msgstr "" " de laatste wijzigingstijd gebruiken\n" "\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1091,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " recepten niet uitvoeren, alleen weergeven\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,7 +1101,7 @@ msgstr "" " BESTAND als oud beschouwen, niet opnieuw " "maken\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,12 +1110,12 @@ msgstr "" " uitvoer van parallelle taken synchroniseren " "op TYPE\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -997,53 +1123,60 @@ msgstr "" " -q, --question geen recepten uitvoeren; de afsluitwaarde\n" " geeft aan of alles bijgewerkt is\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet recepten niet weergeven\n" -#: src/main.c:390 +#: src/main.c:377 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:379 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:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace tracing-informatie weergeven\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1051,7 +1184,7 @@ msgstr "" " --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n" " was aangezet\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1059,7 +1192,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1067,27 +1200,62 @@ msgstr "" " --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n" " variabele wordt verwezen\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "schrijffout: standaarduitvoer" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "lege tekenreeks is ongeldig als bestandsnaam" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "onbekende aanduiding '%s' voor debug-niveau" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "onbekend uitvoersynchronisatie-type: '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s.\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Rapporteer programmafouten aan ;\n" +"meld gebreken in de vertaling aan .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1102,28 +1270,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "verwijderen (van tijdelijk bestand): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1131,179 +1303,167 @@ msgstr "" "Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' " "toe aan de ouderregel." -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (tijdelijk bestand)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: tijdelijk bestand %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Opnieuw instellen op enkele-taakmodus (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Taakservercontroller %s wordt gebruikt\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Uitvoersynchronisatievergrendeling %s wordt gebruikt\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Husselmodus is ingeschakeld: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Bijwerken van Makefiles...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: laden is mislukt" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Opnieuw maken van Makefile '%s' is mislukt." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Ingesloten Makefile '%s' is niet gevonden." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile '%s' is niet gevonden." -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Geen doelen" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Bijwerken van doelen...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sDit programma is gecompileerd voor %s.\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sDit programma is gecompileerd voor %s (%s).\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1312,7 +1472,7 @@ msgstr "" "\n" "# Make-gegevensbank, weergegeven op %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1321,384 +1481,414 @@ msgstr "" "\n" "# Make-gegevensbank voltooid op %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s waarde %s: %s" + +#: src/misc.c:605 #, 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: not a directory" +msgstr "%s waarde %s: is geen map" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Toegang geïnitialiseerd" +#: src/misc.c:613 +#, 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:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "aanmaken van tijdelijk bestand %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-toegang" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "verwijderen van tijdelijk bestand %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Dochterprocestoegang" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: tijdelijk bestand %s: %s" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, 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:475 msgid ". Stop.\n" msgstr ". Gestopt.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Kan taakserver %s niet openen: %s" -#: src/output.h:62 +#: src/posixos.c:186 src/w32/w32os.c:219 #, 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." +msgid "Unknown jobserver auth style '%s'" +msgstr "Onbekende authenticatiestijl '%s' voor taakserver" -#: src/posixos.c:90 +#: src/posixos.c:190 msgid "creating jobs pipe" msgstr "aanmaken van takenpijp" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "dupliceren van takenpijp" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "initialiseren van taakserverpijp" -#: src/posixos.c:119 +#: src/posixos.c:261 #, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" -msgstr "*interne fout*: ongeldige tekenreeks '%s' voor '--jobserver-auth'" +msgid "invalid --jobserver-auth string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--jobserver-auth'" -#: src/posixos.c:122 -#, 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" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "schrijven naar taakserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "taakserver is gestopt" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect() van takenpijp" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "lezen van takenpijp" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--sync-mutex'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan vergrendeling %s voor uitvoersynchronisatie niet openen: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Lezen van Makefile '%s'" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (geen standaarddoel)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (zoekpad)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (maakt niet uit)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (geen expansie van ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "recept begint voor eerste doel" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "ontbrekende regel vóór recept" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "ontbrekend scheidingsteken" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "ontbrekend doelpatroon" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "meerdere doelpatronen" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "doelpatroon bevat geen '%%'" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "ontbrekende 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "lege naam van variabele" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "extra tekst na 'define'-opdracht" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "ontbrekende 'endef', onafgemaakte 'define'" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "extra tekst na 'endef'-opdracht" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "extra tekst na '%s'-opdracht" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "extra '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "slechts één 'else' per voorwaardelijk deel" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Onjuiste doelspecifieke variabele-definitie" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT hoort geen vereisten te hebben" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT hoort geen opdrachten te hebben" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "vereisten kunnen niet in recepten gedefinieerd worden" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "gegroepeerde doelen moeten een recept geven" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "gemengde impliciete en statische patroonregels" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "gemengde impliciete en normale regels" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items" -#: src/read.c:2128 +#: src/read.c:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' is up-to-date." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Snoeien van bestand '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Doelbestand '%s' wordt overwogen.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Bestand '%s' was al overwogen.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Bestand '%s' wordt nog bijgewerkt.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Bijwerken van bestand '%s' is voltooid.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Bestand '%s' bestaat niet.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1706,149 +1896,143 @@ msgstr "" "*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie " "tijdsstempel" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:538 #, 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:558 #, 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:603 src/remake.c:1165 #, 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 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH-naam '%s' wordt gebruikt" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Doel '%s' moet opnieuw gemaakt worden.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH-naam '%s' wordt genegeerd.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2040,7 @@ msgstr "" "\n" "# Impliciete regels" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1864,7 +2048,7 @@ msgstr "" "\n" "# Geen impliciete regels." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1873,11 +2057,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 +2285,44 @@ msgstr "" "# hashtabel-statistieken van bestanden:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatisch" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "standaard" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "omgeving" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "Makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "omgeving onder -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "opdrachtregel" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "'override'-opdracht" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (uit '%s', regel %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# Statistieken van hashtabel van variabelenverzameling:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2141,7 +2330,7 @@ msgstr "" "\n" "# Variabelen\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2149,7 +2338,7 @@ msgstr "" "\n" "# Patroonspecifieke variabelewaarden" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2157,7 +2346,7 @@ msgstr "" "\n" "# Geen patroonspecifieke variabelewaarden" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2166,7 +2355,7 @@ msgstr "" "\n" "# %u patroonspecifieke variabelewaarden" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'" @@ -2193,22 +2382,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2216,11 +2405,11 @@ msgstr "" "\n" "# VPATH-zoekpaden\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Geen 'vpath'-zoekpaden." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2229,7 +2418,7 @@ msgstr "" "\n" "# %u 'vpath'-zoekpaden.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2237,7 +2426,7 @@ msgstr "" "\n" "# Geen algemeen zoekpad ('VPATH'-variabele)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2247,38 +2436,83 @@ msgstr "" "# Algemeen zoekpad ('VPATH'-variabele):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Taakservercliënt (semafoor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan uitvoersynchronisatievergrendeling %s niet ontleden: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ongeldige uitvoersynchronisatievergrendeling: %s" + +#~ 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 +2534,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 da819d0ca0079157f8066edb767b9a81fba13189..996bc68bd540bf326f2bddc2b3b07abe8c6873b8 100644 GIT binary patch delta 14807 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 diff --git a/po/pl.po b/po/pl.po index 34d33fb..67ccce5 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 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-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 20:30+0100\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 20:41+0200\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:1107 msgid "" "\n" "# Directories\n" @@ -134,221 +139,252 @@ msgstr "" "\n" "# Katalogi\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klucz %s, czas modyfikacji %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Nie" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " pliki, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "nie" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " niemożliwości" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " jak dotąd." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Kasowanie pliku pośredniego '%s'" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Kasowanie plików pośrednich...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY wykluczają się wzajemnie" + +#: src/file.c:942 msgid "Current time" msgstr "Aktualny czas" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# To nie jest obiekt:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenny plik (zależność .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiekt niejawny (zależność .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Obiekt podany w linii poleceń." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Reguła wbudowana" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Szukanie reguł domyślnych zostało wykonane." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Szukanie reguł domyślnych nie zostało wykonane." -#: src/file.c:1034 +#: src/file.c:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." msgstr "# Plik jest zależnością przejściową." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Plik jest zależnością .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Plik jest drugorzędny (zależność .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Robi również:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Czas modyfikacji nie był sprawdzany." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Plik nie istnieje." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Plik jest bardzo stary." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Ostatnio modyfikowany %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Plik został uaktualniony." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Plik nie został uaktualniony." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Aktualnie uruchamiane polecenia (TO JEST BŁĄD)." -#: src/file.c:1065 +#: src/file.c:1142 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:1151 msgid "# Successfully updated." msgstr "# Uaktualnienie powiodło się." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Powinien być uaktualniony (-q jest włączone)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Uaktualnianie nie powiodło się." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Błędna wartość w elemencie 'command_state'!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -356,7 +392,7 @@ msgstr "" "\n" "# Pliki" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -366,124 +402,142 @@ msgstr "" "# statystyki tablic haszujących plików:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:799 +#: 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: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:1533 +#: 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "plik: brak nazwy" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "otwarcie: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "zapis: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "zamknięcie: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "plik: zbyt dużo argumentów" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "odczyt: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "plik: błędna operacja na pliku: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Pusta nazwa funkcji" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Błędna nazwa funkcji: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Zbyt długa nazwa funkcji: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s" @@ -574,133 +628,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:326 #, 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:490 +#: src/implicit.c:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Próbowanie reguły wzorcowej z gałęzią '%.*s'.\n" +msgid "Trying harder.\n" +msgstr "Dalsza próba.\n" -#: src/implicit.c:717 +#: src/implicit.c:501 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Odrzucenie niemożliwej zależności reguły '%s'.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Próbowanie reguły wzorcowej '%s' z gałęzią '%.*s'.\n" -#: src/implicit.c:718 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Odrzucenie niemożliwej zależności domyślnej '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Gałąź zbyt długa: '%s%.*s'.\n" -#: src/implicit.c:732 +#: src/implicit.c:768 +#, c-format +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:770 +#, c-format +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:787 #, 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:788 #, 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:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' powinien istnieć.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "Znaleziono '%s'.\n" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n" -#: src/implicit.c:786 +#: src/implicit.c:885 +#, 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:886 #, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nie znaleziono '%s'.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Znaleziono standardową regułę '%s' dla '%s'.\n" + +#: src/implicit.c:1151 +#, 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:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Brak standardowych reguł dla '%s'.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Nie można utworzyć pliku tymczasowego" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (zignorowano)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Oczekiwanie na niezakończone zadania...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (zdalne)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:956 +#: src/job.c:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -709,86 +825,85 @@ msgstr "" "\n" "Naliczono %d parametrów nieudanego uruchomienia\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Otrzymano token dla potomka %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: obiekt '%s' nie istnieje" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "obiekt nie istnieje" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "niemożliwe wymuszenie limitu obciążenia: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogło zabraknąć miejsca na środowisko" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Tworzenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -797,7 +912,7 @@ msgstr "" "Zawartość pliku wsadowego:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -806,7 +921,7 @@ msgstr "" "Zawartość pliku wsadowego:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +931,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:317 msgid "Options:\n" msgstr "Opcje:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorowane dla kompatybilności.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -863,19 +988,19 @@ msgstr "" " Przejście do KATALOGu przed robieniem\n" " czegokolwiek.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Wyświetla dużo informacji diagnostycznych.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -883,14 +1008,14 @@ msgstr "" " -e, --environment-overrides\n" " Zmienne środowiska przykrywają makefile.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -898,16 +1023,16 @@ msgstr "" " -f PLIK, --file=PLIK, --makefile=PLIK\n" " Czyta PLIK jako makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -915,7 +1040,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Szuka dołączanych makefile w KATALOGu.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -923,14 +1048,18 @@ msgstr "" " -j [N], --jobs[=N] Dopuszcza N zadań naraz; brak N oznacza brak\n" " ograniczeń.\n" -#: src/main.c:364 +#: src/main.c:346 +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:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -941,7 +1070,7 @@ msgstr "" "jest\n" " poniżej N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -949,7 +1078,7 @@ msgstr "" " -L, --check-symlink-times Używanie ostatniego mtime między dowiązaniem a " "celem.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -958,7 +1087,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Nie wykonuje poleceń; jedynie je wyświetla.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -969,7 +1098,7 @@ msgstr "" "go\n" " ponownie.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -978,11 +1107,11 @@ msgstr "" " Sposób synchronizacji wyjścia zadań " "równoległych.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -990,25 +1119,33 @@ msgstr "" " -q, --question Nie uruchamia żadnych poleceń; status powrotu\n" " wskazuje aktualność.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Nie wypisuje poleceń.\n" -#: src/main.c:390 +#: src/main.c:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1016,25 +1153,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Wyłącza -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Wypisywanie informacji ze śledzenia.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1042,7 +1179,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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1050,7 +1187,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1059,27 +1196,60 @@ msgstr "" "niezdefiniowanych\n" " zmiennych.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "błąd zapisu: standardowe wyjście" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "nieznany poziom diagnostyki '%s'" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "nieznany sposób synchronizacji wyjścia '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Składnia: %s [opcje] [obiekt] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ten program został zbudowany dla %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ten program został zbudowany dla %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Błędy proszę zgłaszać na adres \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1094,27 +1264,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (plik tymczasowy): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1122,171 +1296,161 @@ 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:1841 #, 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:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (plik tymczasowy)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: plik tymczasowy %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Przełączanie w tryb jednozadaniowy (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Użycie kontrolera serwera zadań %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Użycie muteksu synchronizacji wyjścia %s\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Włączony tryb przetasowania: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Uaktualnianie plików makefile....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nie udało się załadować" + +#: src/main.c:2528 #, 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:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Nie znaleziono włączanego pliku makefile '%s'." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Nie znaleziono pliku makefile '%s'" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Brak obiektów" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Uaktualnianie obiektów docelowych....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTen program został zbudowany dla systemu %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1295,7 +1459,7 @@ msgstr "" "\n" "# Baza danych Make, wyświetlana na %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1304,381 +1468,411 @@ msgstr "" "\n" "# Zakończono tworzenie bazy danych Make na %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "wartość %s %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "wartość %s %s: to nie katalog" + +#: src/misc.c:613 #, 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 "using default temporary directory '%s'" +msgstr "użycie domyślnego katalogu tymczasowego '%s'" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Zainicjalizowany dostęp" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "tworzenie pliku tymczasowego %s: %s" -#: src/misc.c:743 -msgid "User access" -msgstr "Dostęp użytkownika" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "usuwanie pliku tymczasowego %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Dostęp make" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: plik tymczasowy %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Dostęp potomka" +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: plik tymczasowy %s: %s" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "błąd zapisu: standardowe wyjście" +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:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Stop.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "tworzenie potoku zadań" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplikowanie potoku zadań" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Klient serwera zadań (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "potok serwera zadań" +msgid "invalid --jobserver-auth string '%s'" +msgstr "błędny łańcuch --jobserver-auth '%s'" -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "zapis do serwera zadań" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "serwer zadań zamknięty" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect potoku zadań" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "odczyt potoku zadań" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "błędny łańcuch --sync-mutex '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nie można otworzyć muteksu synchronizacji %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Czytanie pliku makefile '%s'" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (brak celu domyślnego)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (przeszukiwana ścieżka)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (nieważne)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (brak rozszerzenia ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "polecenia zaczynają się przed pierwszym obiektem" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "brakuje reguły przed poleceniami" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "brakujący separator" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "brakujący wzorzec obiektu" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "wielokrotne wzorce obiektu" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "wzorzec obiektu nie zawiera '%%'" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "brakujący 'endif'" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "pusta nazwa zmiennej" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "nadmiarowy tekst po dyrektywie 'define'" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "brakujący 'endef', niezakończone 'define'" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "nadmiarowy tekst po dyrektywie 'endef'" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "niezwiązany tekst po dyrektywie '%s'" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "nadmiarowy '%s'" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "tylko jedno 'else' w wyrażeniu warunkowym" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Źle sformułowana definicja zmiennej dla celu" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nie powinno mieć zależności" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nie powinno mieć poleceń" + +#: src/read.c:2039 #, 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:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "pogrupowane obiekty muszą dostarczać opis polecenia" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "pomieszane standardowe i normalne reguły" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "uwaga: polecenia zakrywające dla obiektu '%s'" -#: src/read.c:2141 +#: src/read.c:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nie ma nic do zrobienia w '%s'." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' jest aktualne." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Czyszczenie pliku '%s'.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Przetwarzanie pliku obiektowego '%s'.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Plik '%s' był już przetwarzany.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Wciąż uaktualniam plik '%s'.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Skończyłem uaktualniać plik '%s'.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Plik '%s' nie istnieje.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1686,148 +1880,142 @@ msgstr "" "*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika " "czasu" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:538 #, c-format -msgid "Found an implicit rule for '%s'.\n" -msgstr "Znaleziono standardową regułę dla '%s'.\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" +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:515 +#: src/remake.c:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Okrężna dyrektywa %s <- %s porzucona." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Zaniechany plik obiektowy '%s'.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; użyto nazwy VPATH '%s'" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Zignorowano nazwę VPATH '%s'.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Uruchomiono polecenia dla '%s'.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, 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:916 #, 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:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Stosowanie standardowych poleceń dla '%s'.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2023,7 @@ msgstr "" "\n" "# Reguły stadardowe" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1843,7 +2031,7 @@ msgstr "" "\n" "# Brak standardowych reguł." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1852,11 +2040,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 +2262,44 @@ msgstr "" "# statystyki tablic haszujących:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatyczna" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "domyślna" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "środowiskowa" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "środowisko pod -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "z linii poleceń" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "dyrektywa 'override'" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (z '%s', linia %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# statystyki tablic haszujących ustawionych zmiennych:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2114,7 +2307,7 @@ msgstr "" "\n" "# Zmienne\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2122,7 +2315,7 @@ msgstr "" "\n" "# Wartości zmiennych dla wzorca" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2130,7 +2323,7 @@ msgstr "" "\n" "# Brak wartości zmiennych dla wzorca." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2139,7 +2332,7 @@ msgstr "" "\n" "# %u wartości zmiennych dla wzorca" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "uwaga: niezdefiniowana zmienna '%.*s'" @@ -2164,22 +2357,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2187,11 +2380,11 @@ msgstr "" "\n" "# Ścieżki przeszukiwania VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Brak ścieżek przeszukiwania 'vpath'" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2200,7 +2393,7 @@ msgstr "" "\n" "# %u ścieżek przeszukiwania 'vpath'.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2208,7 +2401,7 @@ msgstr "" "\n" "# Brak ogólnej (zmienna 'VPATH') ścieżki przeszukiwania." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2218,17 +2411,17 @@ 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" -#: 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)" @@ -2236,17 +2429,27 @@ msgstr "" "błąd wewnętrzny: nie udało się otworzyć semafora serwera zadań '%s': (Błąd " "%ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klient serwera zadań (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "niezrozumiały mutex synchronizacji wyjścia %s: %s" + +#: src/w32/w32os.c:452 +#, 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 c0c750e31ce718c0af5a1a25f15d8cc39386bed5..02a567486834b17d499486cc9da6013fd480277a 100644 GIT binary patch delta 8675 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 delta 12562 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 uHfC#&q)VKy58g5`A^h)bJ\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:1107 msgid "" "\n" "# Directories\n" @@ -134,219 +139,251 @@ msgstr "" "\n" "# Pastas\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (chave %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Não" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "não" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " impossibilidades" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " até agora." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** A eliminar ficheiro intermédio \"%s\"" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "A remover ficheiros intermédios...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Hora actual" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Não é um alvo:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Alvo falso (pré-requisito de .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Alvo da linha de comandos." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Regra interna" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Foi feita uma procura com regra implícita." -#: src/file.c:1032 +#: src/file.c:1105 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:1107 #, 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:1109 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é um pré-requisito imediato." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Alvo falso (pré-requisito de .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Também faz:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Hora de modificação nunca verificada." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# O ficheiro não existe." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# O ficheiro é muito antigo." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificação %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# O ficheiro não foi actualizado." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Receita actualmente em execução (ISTO É UM ERRO)." -#: src/file.c:1065 +#: src/file.c:1142 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:1151 msgid "# Successfully updated." msgstr "# Actualizado com sucesso." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Precisa de actualização (-q está definido)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Falha ao actualizar." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Valor inválido no membro \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -354,7 +391,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -364,124 +401,147 @@ msgstr "" "# estatísticas da hash-table dos ficheiros:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "ficheiro: nome em falta" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "escrever: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "fechar: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "ficheiro: demasiados argumentos" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "ler: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Nome de função vazio" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Nome de função inválido: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Nome de função muito longo: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, 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" @@ -571,133 +631,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:326 +#, 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:451 #, 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:501 +#, 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:506 #, 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:768 +#, 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:770 +#, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "A tentar pré-requisito de regra \"%s\".\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "A tentar pré-requisito implícito \"%s\".\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro \"%s\" não existe.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/implicit.c:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Encontrada uma regra implícita para \"%s\".\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "A procurar regra implícita para \"%s\".\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Impossível criar ficheiro temporário\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (núcleo despejado)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** A aguardar por trabalhos não terminados...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -706,86 +827,86 @@ msgstr "" "\n" "Contados %d argumentos no lançamento falhado\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: alvo \"%s\" não existe" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "impossível restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" @@ -794,7 +915,7 @@ msgstr "" "Conteúdo do ficheiro batch:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -803,7 +924,7 @@ msgstr "" "Conteúdo do ficheiro batch:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +934,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:317 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m ignora para compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -859,18 +990,18 @@ msgstr "" " muda para PASTA antes de qualquer outra " "coisa.\n" -#: src/main.c:343 +#: src/main.c:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,13 +1010,13 @@ msgstr "" " substitui as variáveis de ambiente com os " "makefiles.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -893,15 +1024,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " lê FICHEIRO como makefile.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -909,7 +1040,7 @@ msgstr "" " -I PASTA, --include-dir=PASTA\n" " procura em PASTA por makefiles incluídos.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -917,14 +1048,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -934,7 +1069,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -942,7 +1077,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1087,7 @@ msgstr "" " não executa realmente nenhuma receita; só as " "imprime.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1097,7 @@ msgstr "" " Considera FICHEIRO muito antigo e não o " "refaz.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -971,12 +1106,12 @@ msgstr "" " sincroniza saída de tarefas paralelas por " "TIPO.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -984,27 +1119,33 @@ msgstr "" " -q, --question não executa receitas; estado de saída mostra " "actualização.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1012,24 +1153,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " desliga -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace imprime informação de rastreio.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1037,7 +1178,7 @@ msgstr "" " --no-print-directory desliga -w, mesmo que estivesse implicitamente " "ligado.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1046,7 +1187,7 @@ msgstr "" "new=FICHEIRO\n" " considea FICHEIRO infinitamente novo.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1054,27 +1195,60 @@ msgstr "" " --warn-undefined-variables avisa quando uma variável indefinida é " "referenciada.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "erro de escrita: stdout" + +#: src/main.c:742 #, 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:834 #, 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:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo de output-sync \"%s\" desconhecido" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa construído para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construído para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Reportar erros em \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1089,187 +1263,181 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "desligar (ficheiro temporário): " + +#: src/main.c:1833 #, 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporário)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "A repor modo de tarefa única (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "A actualizar makefiles....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falha ao carregar" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Falha ao refazer makefile \"%s\"." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "makefile \"%s\" incluído não encontrado." -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Impossível voltar à pasta original." -#: src/main.c:2402 +#: src/main.c:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Sem alvos" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Sem alvos especificados e sem makefile" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "A actualizar alvos objectivo...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruído para %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruído para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1447,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:3682 #, c-format msgid "" "\n" @@ -1288,7 +1456,7 @@ msgstr "" "\n" "# Base de dados make, impressa em %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1297,380 +1465,410 @@ msgstr "" "\n" "# Base de dados make terminada em %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "A usar receita predefinida para \"%s\".\n" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Acesso inicializado" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "A criar ficheiro batch temporaŕio %s\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Acesso de utilizador" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desligar (ficheiro temporário): " -#: src/misc.c:791 -msgid "Make access" -msgstr "Acesso make" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Acesso filho" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "erro de escrita: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Parar.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "a criar túnel de tarefas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "a enganar túnel de tarefas" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "escrever jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "encerramento de jobserver" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect túnel de tarefas" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "ler túnel de tarefas" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "A ler makefile \"%s\"" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (sem objectivo predefinido)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (caminho de procura)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (não importa)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (sem expansão ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "a receita começa antes do primeiro alvo" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "regra em falta antes da receita" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "separador em falta" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "padrão de alvo em falta" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "múltiplos padrões de alvo" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "o padrão de alvo não contém \"%%\"" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "\"endif\" em falta" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nome de variável vazio" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "texto estranho após directiva \"define\"" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "\"endef\" em falta, \"define\" não terminado" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "texto estranho após directiva \"endef\"" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "texto estranho após directiva \"%s\"" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "\"%s\" estranho" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "só um \"else\" por condicional" -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, 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:2123 #, 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:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nada a fazer para \"%s\"." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" está actualizado." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "A podar ficheiro \"%s\".\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "A considerar o ficheiro alvo \"%s\"\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Ficheiro \"%s\" já considerado.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Ainda a actualizar o ficheiro \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Terminou a actualização do ficheiro \"%s\".\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "O ficheiro \"%s\" não existe.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1678,147 +1876,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dependência %s <- %s circular abandonada." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Sem necessidade de refazer o alvo \"%s\"" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; a usar nome VPATH \"%s\"" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Necessário refazer o alvo \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " A ignorar nome VPATH \"%s\".\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Ficheiro alvo \"%s\" refeito com sucesso.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "A usar comandos predefinidos para \"%s\".\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2018,7 @@ msgstr "" "\n" "# Regras implícitas" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1834,7 +2026,7 @@ msgstr "" "\n" "# Sem regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1843,11 +2035,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 +2259,44 @@ msgstr "" "# estatísticas da hash-table:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "predefinido" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "ambiente sob -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "linha de comandos" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "directiva \"override\"" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (de \"%s\", linha %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2107,7 +2304,7 @@ msgstr "" "\n" "# Variáveis\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2115,7 +2312,7 @@ msgstr "" "\n" "# Valores de variáveis específicas de padrão" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2123,7 +2320,7 @@ msgstr "" "\n" "# Sem valores de variáveis específicas de padrão" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2132,7 +2329,7 @@ msgstr "" "\n" "# %u valores de variáveis específicas de padrão" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "aviso: variável \"%.*s\" indefinida" @@ -2157,22 +2354,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2180,11 +2377,11 @@ msgstr "" "\n" "# Caminhos de procura VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Sem caminhos de procura \"vpath\"." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2193,7 +2390,7 @@ msgstr "" "\n" "# Caminhos de procura %u \"vpath\".\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2201,7 +2398,7 @@ msgstr "" "\n" "# Sem caminho de procura geral (variável \"VPATH\")." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2210,37 +2407,72 @@ msgstr "" "\n" "# Caminho de procura geral (variável \"VPATH\")." -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliente jobserver (semáforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome de função inválido: %s" + +#~ 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" + +#~ 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." + +#~ 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 82195dab9b5724b7dfd43022874ca2f2f00fa829..6eff4e05a71dbb364464bb8802f35cd14b579cb0 100644 GIT binary patch delta 8655 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 delta 12656 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 TRoV})G<)jzF0|v5cNG2uN4sdd diff --git a/po/pt_BR.po b/po/pt_BR.po index fcc62a4..9ed3a63 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: 2022-10-31 02:23-0400\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:587 +#, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "** Esperando que outros processos terminem." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -748,88 +887,88 @@ msgstr "" "\n" "Contados %d args na falha de execução\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s Alvo '%s' não existe" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Não é possível restaurar stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" @@ -838,7 +977,7 @@ msgstr "" "Conteúdo do arquivo de lote:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -847,7 +986,7 @@ msgstr "" "Conteúdo do arquivo de lote:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +996,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:317 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado para compatibilidade.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -903,18 +1052,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:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -922,14 +1071,14 @@ msgstr "" " -e, --environment-overrides\n" " Assume os valores das variáveis de ambiente.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -937,15 +1086,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:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -954,7 +1103,7 @@ msgstr "" " Pesquisa o DIRETÒRIO por arquivos make a " "incluir.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -962,14 +1111,18 @@ msgstr "" " -j [N], --jobs[=N] Permite N tarefas de uma vez; tarefas infinitas " "sem argumentos.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -979,7 +1132,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:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -987,7 +1140,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -997,7 +1150,7 @@ msgstr "" " Não executa quaisquer comandos; apenas imprime-" "os.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1007,7 +1160,7 @@ msgstr "" " Considera o ARQUIVO como muito antigo e não " "reprocessá-o.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1016,12 +1169,12 @@ msgstr "" " Sincroniza a saída de tarefas paralelas pelo " "TIPO.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1029,27 +1182,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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1057,27 +1216,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desativa a opção -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " -trace Imprime informação de depuração.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1085,7 +1244,7 @@ msgstr "" " --no-print-directory Desativa a opção -w, mesmo que ela esteja " "implicitamente ativada.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1093,7 +1252,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1101,27 +1260,60 @@ msgstr "" " --warn-undefined-variables Avisa quando um variável não definida for " "referenciada.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "Erro de gravação: stdout" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "nível de depuração desconhecido: '%s' " -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo output-sync desconhecido '%s'" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opções] [alvo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa foi compilado para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa foi compilado para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe os problemas para .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1136,188 +1328,182 @@ msgstr "" "SinalExceção = %lx\n" "EndereçoExceção = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "desvinculado (arquivos temporário): " + +#: src/main.c:1833 #, 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (arquivo temporário)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reiniciando no modo de tarefa única (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Atualizando os arquivos makefiles ...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falhou ao carregar" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Problemas ao reprocessar o arquivo '%s'. " -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Arquivo '%s' incluido não foi encontrado. " -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Sem alvo" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Atualizando os objetivos finais...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1514,7 @@ msgstr "" "livremente.\n" "%sNÃO HÁ GARANTIAS, exceto o que for permitido por lei.\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1337,7 +1523,7 @@ msgstr "" "\n" "# Banco de dados do Make, impresso em %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1346,403 +1532,434 @@ msgstr "" "\n" "# Banco de dados do Make finalizado em %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Criando arquivo de lote temporário %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Acesso do make" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desvinculado (arquivos temporário): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Acesso filho" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "Erro de gravação: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Pare.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: src/output.h:62 -#, 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:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:190 msgid "creating jobs pipe" msgstr "criando canalização de tarefas" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplicando canalização de tarefas" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "gravar jobserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "servidor de job desligado" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "tarefas canalizadas pselect" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "tarefas canalizadas lidas" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: valor '%s' inválido para --jobserver-auth" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Lendo arquivos makefile '%s' " -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (não há objetivo padrão)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (caminho de pesquisa)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (sem importância)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (sem expansão ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "comandos começam antes do primeiro alvo" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "falta uma regra antes dos comandos" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, c-format msgid "missing separator" msgstr "faltando o separador" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "faltando o padrão dos alvos" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "múltiplos padrões para o alvo" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "padrão para o alvo não contém '%%' " -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "faltando 'endif' " -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "nome de variável vazio" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "Texto estranho depois da diretiva 'define' " -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "faltando 'endef', 'define' não terminado " -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "Texto estranho depois da diretiva 'endef'" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "Texto estranho depois da diretiva '%s' " -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "'%s' estranho " -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "use apenas um 'else' por condicional " -#: src/read.c:1908 +#: src/read.c:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "alvos agrupados devem fornecer uma instrução" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "As regras implícitas e normais misturadas" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Nada a ser feito para '%s'. " -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "'%s' está atualizado. " -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "" "Atualizando o arquivo '%s'.\n" "\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "" "Considerando o arquivo alvo '%s'.\n" "\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, 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:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "" "Ainda está atualizando o arquivo '%s'.\n" "\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "" "Atualização do arquivo '%s' concluida.\n" "\n" -#: src/remake.c:486 +#: src/remake.c:513 #, 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:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1750,185 +1967,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dependência circular %s <- %s abandonada." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "" "Pré-requisitos do alvo '%s' concluido.\n" "\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "" "Pré-requisitos do '%s' estão sendo criados.\n" "\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "" "Desistindo do arquivo '%s'.\n" "\n" -#: src/remake.c:699 +#: src/remake.c:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; usando o nome VPATH '%s' " -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "" "O alvo '%s' deve ser reprocessado.\n" "\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr "" " Ignorando o nome VPATH '%s'.\n" "\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "" "Alvo '%s' reprocessado com sucesso.\n" "\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2145,7 @@ msgstr "" "\n" "# Regras implícitas." -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1944,7 +2153,7 @@ msgstr "" "\n" "# Faltam as regras implícitas." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1953,11 +2162,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 +2384,44 @@ msgstr "" "# tabela hash de arquivos:\n" "#" -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automático" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "padrão" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "ambiente" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "ambiente sob -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "linha de comando" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "diretiva 'override' " -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (de '%s', linha %lu) " -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# tabela hash do conjunto de variávies:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2215,7 +2429,7 @@ msgstr "" "\n" "# Variáveis\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2223,7 +2437,7 @@ msgstr "" "\n" "# Valores da variável de padrões específicos" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2231,7 +2445,7 @@ msgstr "" "\n" "# Faltam valores para variável de padrões específicos" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2240,7 +2454,7 @@ msgstr "" "\n" "# %u valores para variável de padrões específicos" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "aviso: variável indefinida '%.*s' " @@ -2265,22 +2479,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2288,11 +2502,11 @@ msgstr "" "\n" "# Caminho VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Sem caminho 'vpath'. " -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2302,7 +2516,7 @@ msgstr "" "# %u caminhos 'vpath'.\n" "\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2310,7 +2524,7 @@ msgstr "" "\n" "# Sem caminho genérico (variável 'VPATH')." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2320,37 +2534,72 @@ msgstr "" "# Caminho genérico (variável 'VPATH'):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Cliente Jobserver (semáforo %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome da função inválido: %s" + +#~ 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" + +#~ 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." + +#~ 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 0000000000000000000000000000000000000000..b2ede8f29b6c62d260488269d1606dfc63a305a0 GIT binary patch literal 52157 zcmb`Q37lm`b^kB803(Q?tODKvn(2XgJqvpe1N8Lt3@x)U)5A94_`2Wi?l<%Lz2+^m zpdvzIL}PGQ1VvHYFi3((;vN|d8W)U9OpF?rL=!c}f7B!m&ZYeoz#h1b+VMQMBjaD0<<^dK*PoFLLj%0nZ}58$1KN z2Rst|EO;pRx8OqXdtd>4a&HtJ1+D;Na1E&U33v?nT9ByGd%@GdFN4Q|zXXo}4__Qb zs=|rj@!$pEX7CDdC3p{bD)?>i+2BEEx^hkin}jb0*Mkp&Yd}?A>4!jt-vBniZ-N(s zo0de;2JklUQt)rU8hAXFUI)GmRQNGa`CQr;MHTSX;9Bsv;B&#DrBQS<_$pBO9Pp>K~VXA4O|8O8l+333oeQxSR|SP#g}(` z{2{3Fml9d|mBEw1eW3c`4d7G3yTN0?cY*5vkAjN#9q?rEe?W?gPK3!+k1N4vgL^^I z>vf>=|0JmXe+*RnzVGojpy+hmB`&`;p!$6j)cco#qUS?k41OO}|2+B9D0&WfmdDFM zmA?xd0AC5J+%JKm`**-Eg1-Qj?hzs_1-}m-2R?JP%l9lWCcFhyJsP0m-vK@o{BuzB z_yVYWzYmJO{|P<~Jd?qzemM^me{Ar01Gt{>>p@sJ`W`4coq%vr_*@WDL>2Hb@IFxV zdk7RCeiu}{!-pKd41%W-9tBnZmx4<7R`3w;J)r9K04VCg#V0p{hl6kQ@81cE zo}UBNzJCEv2amnX@x@9|`D_D~e-qUBxd~J`Z}j00fU57Kpvw7oa3T1NVOQP?P<(a? zcqn)ccmz1=!_%Ppb04VkUI{Ax`$6^ZXF%2K@4+*`gP!Z^-3yBDmw_6O74TH>4?xxP zeW3XE5m4jf-@wJ-(=T`5F91c4D?sJ*Ja7?s3#k0w2Z}zQ2G!sH2tE}&3Fc9{(?GRn z8L0YS2#Vete7FG~M)(gv<^O6>?Rp55eEE{cCv9;3dOoQ3Uk$39J)r7+6DT^|1)dB3 zDX8}S2vj`}+UVMO5-9!|2Gx!mL6vh4coz6|P<(UnCKvw{Q1!hWEPywFN_RJ?dj2JN zF!)_i`ThV@zaF#M)$4q)pYS$t0r)ELOz=+d8Q^C?@x$MM>X%=DqQ`MpIC?Gwk05+C zsPe}>z7AYY_*38@_zNGtV2k6souKG_3#fE&0G|x*2af_j3yNOf^!Rg7!M}rQ_i0S5J?DW(gC$UWzXufG-vz2)9s$+w-vX8HKS9wu zy2{bzDDYVXdqAb@2i5;Y@I3I9pvJ*|un+uKQ2lrE)$V&QsD9i59s|A{JQ92xsQNzu zD!;FSYF~7X$Drtc!u5{+3qiGS1^7&G1Qfqaf@*&g6di8^Ro)$- z>iuz0{PIKaWbnx6IeAb3k0rbjJRVHI3&5MeW#Gd;{3B5HTe!oezZg_It^-B?TR`RW zW>EF|6Ht8cY49@ee?Zk|==rYPouK&R6`8+{Q1GNt$B#Xr=&&9<5xfr6xZMM)zitCn-$%gbfPV*yKEDPm0&jXeIHc;h%7!*H!9#p(IiTov6=?kc zD&0e%`r{|y8Q_VNj{XCn>b(Oz0jz?m*ULb)?_N;le;ri1UxBN@lgqB3wuAkI-{`}C z4XPba-|6aiDX4y#0xtvK4W0x38+azzv&-@2W>D?84OD-;-@pHR@O;9@R2=_p0M-9R zP~+?d@Z^Khzd_OaEmhafPkH<|Q0+UV=EhS26#Xs)#b-58e0?9d6#N9J_WcahI4?{) z`VE7s@6Dk2?mkfYeg?c0{2F)~cPUi=x+o*Mt89z8t)^i7pHNBS@D=7qr|wayR%A!rue+y|kM(JoqrU6Fg^+TSwjv zUP1Vnz3?tL0lo?R3^)Yt*yq-__kya|ufP|8HxRf4{3$4U6?jRPL}gI*{u+2Ycov1K z+>h|T*Mb+k2;BhuJU9g&f0OI~mxAigFM+DxAuo3Iu7ej5{xoYm z1#SVwCllb2;LE`i!8d~^fe(QTz`yq4Z+ZMRcna^2gILc1&jX(ct^=P2ZU>J7CqVJ} zK2ZGiHc;)jA3O&9HK=sYxW(1$bg-ZBTJQw$CE)Sko#1o84}zzHUj@Zi{{dbAo_njK zYZX+y`@!?TFM=0>Px(E^CzpWd60U*D_g+x(J`O6MUxF*ZzTbCrErO!s9iZZW9XuBN z8Q2Rx^`)-drJ(9n16AH@z-NP>2bJHCK+)^jf8glR532n|@DgwjxE6dE>;r!bt_BM) zb2tqu-h<#c`0t?Tc8E& zd%;6q>BjFea1r6{9&ZIjulv9a;I~21d&wU;dJclWAiM)y297XTE(d=fRR4S#TnhdR zcqVw_t6X>pTtc`7im&bgWALM((tQh5zx@hSJD0uM@#7#^Ae?~bfUgA;@KNw$un`m6w-$@{I~;ot-)`Zq!G z;RE22;7>u(|2LrOf8y(1|D6pkC)@(XfA0oGzehmHiN6C?{?Tu6<75aFza(G`z6?~o z-V3U}U-bCDpy;;jjgB7A1d8!;9~7@vj9>aG3B*!DoYyfvW#cK-K@Z;IZK0Z*}>f2C6+*gKB>rJPUj=xDdP#yb%0? z$3yOR?Hd3^-x_!bcn_$0ybnAH{33V>_+wE0d)C_=oi>A_!wsO?@h(v9|28Q3bL88d zT-pMPkM96Cfu8{fz+>-md~h`=I^PZ|{l~zA!G8s}fIkN>0N1?3#eWgFjqnFS(P6iJ)w#^18{ zI=&qRH|RU~H1Ox(wcu~SE5NJY=fdv;`w2hgK3A_x!9|3d;9~GD|Nb-J(S&~u9ts}u ze%If}g5rx)z-NJ1gKFOtxC(qbcpCT}Q0;iqA5#{15%_d)H7L1rg~tR`d-j1Fzz4u9 z!QX-^XWRXb4!47<$JfD&!S8_TpHn{I_@D@i?_UF|-1|Yr`ynWPJL3UoS9l&My59r# zf}aM}?tcX}-j4qhM~}0?(+O|)cr&Q}xEB;3{{&RK7yhY}o7+IO_!9n||5fJ?ypz+=I0fa;&0fui3p!K1;W9(LuQ4xUALJ$NR# z7gRa#@b5nj_7MI#sCFOsXO2(L1)od!72q)Vbub3wKX>T|z~zL;z*E52gU4z zK~VKO>SK;h+rd7@O;8$@I>(K;KATW!BOxN z;ML%%pK$mB@B+eL1y_PceA3l(7*xMbf#-lXffs@gg3AA=pz7E27cSlisP-h_rQq%0 z8t^et{e8@*oLn9PmES0MDfmWEeDe)Z?fDl_{NDG73vUH4QarF9{3>`Fc;tT9e`kXO zgtvhz=Z)ZX;9r8O=joqz?Ya(JLHJFe%KIx&`F#sq1s?wyM~5px(fM{z_52XH1N<@g zeDLzWbnCPCgDU5#k2?My^LP(<1@FHLz8pOJv#wu14yql8e$LG&L!jvQdQkkgA5?vQ z1&Yqg|H{!}7kCQcSAj=>9{>*m-^TxbkLL?KD|jB|5g&XIoa70AWBm9$;Wa$subn)% z^1P0x&bx1ch=%By{BDAx;oJHBS3KgA5itC%_CKb0_e!3(5`LNg{%lb6_!4+E&nI}k zMEDPRmht;*pxXO2e(Ud*4x*3wun!u1m;c}I-|qzfn(&K#gy#`{kN^E`5b+*8hj*hq z&+_jD&(8hU&#&-2!n2-uXYuIo^E~_gZ-wvU_xHgXIKlJJ{C<=Fek#9PJd->hnP(4={(5*m&htZ_zv20mkH^pGr#y%G@Jaj@-|4T( zyK!(6&$W7y`};?J!xGUmh*JW$@QDBNe~0JFDEi;;^AX3{#Le{q(_!$Cx3gt&J5<>0S)^jC3U>oLia@b_VU+{rV-^BJG-5#X_ePXiwYUjjbY zfBOf*Kj(S155L#rbspc%x4k^S;nCkqdCuV59{>IC2>(0JpYi-D@9N+H&n5o*#o)^b zzs`sG8NHL=zXi_)pU(3kp6?L8l;l=V?6m@_dTt7{0|k zV>~b7`83ae^Zq^Hvv`i?xBgB;LLH)fRd?ENvo~Q8qg@6Ap@La-g1mDW@AiqD& z^Aesi;Sca!$}`M!3eN?+|2X&&9{ug+`GWmIzVPk_eqZaqy%yZ(f1eCK$H!YN^zYvX zewpV`a@DZLr;rEYu3jEgJlRfJ9@AGWb5C2!?+t2*(MLymT;f?%W4t|p7v;01e zXBE#Dp11K%e^>GxZ@=gR-f!bM&WFzcm+<^0@AUT#p4)kz&hri){q5)3#q$H6Kl1TT z^!OUy>2EvF3wifJ@CN@)@3->%eDMD%(D8Sp5C5CTgTW=l|A`Mjjo)|s-|zN$p5yUQ z-tXi2nEx*LBG1GA`>*-^=l=Jfc&vDQ72p1a=W{$q`giy6`wjd)l;;ATR}+2^T*~uj zJSXuyk9W&>?%?-JdA`E)Bf|PSmEUKB&sTuIJ9w_LU(9=a(_hhnts_q7-7g4#6x;xQ zg69GMeIHnT{BOa6+;9E7nCCX0TNL1LJxTNG&wa}PO z#>(U6v3Pf}UM`MS5`I)#Nkh@rlF5w*y3n`?7*7@( zlZB?yy3s5)8;%M+4YjG!tdAAPCX;xyH9nrym5dLaZ~Nn(iu$(FS{yIc*K&2D5wEhh z3fJnziNuFj6Qj6$B7{0JoKEWFwfa=CI+paum0E3AYdXtlQmj;L`kZ=tNIO_-SwHlY z;$odL%hh=^fp&G0jj}kLDH+#3XQuKt$y&Nc&>PbV*T(-Ao zdO;M&g+eJAZB1-nwRZi$x~qz2>}Pt=MP2{w_lSuc(y?Rof+>l=OV-Vu9>NVrzDl#G|5 zN+F22MjT(omw3-4v@2HQG)5|=VpzDIFaQ$IYq0rBowU4rztqax4=u}Z6ysQw3Bb1xUOYD*&cj7n+2o=)pk3NmnPSD~?Qs#31*Dm2SeFh(42W0KL} zsZha2GoI3WNYLDq(33v0V<1O)*MLpiN3PjCbiJ~zwVKndCizy!wy(0c^U!=NF(>P_ zYWYT{H%n{`TV!&pBo!OH@#wx-S-HZts2B#XNxpJ5&va}2$WjaJGqlWDu8}mG^qnWd zR-etTB$+NusCV@O(LOy-g(V#%p%4$dT#c@Z*AA~AQt~~M#b%*AzAA*P$)19GJbh7Y zG+I+hf%o=mo}vb8)ke95XjXn=%h5#A5apnmFbc@URbZ5|r?SzK|1~^Og?*9g@WWVb zis`sKTCS9vUTBr_aoc~pv0te*=M%??TAoyQm+3_@b)kl^s#EXAJk1-*(xkmaVLo*y z*N&%DZlkC~LHc5z0=Fc^lA~qYcyvUZR5K=%%5*y!6!KzF^De`rp}Ai&G}&ABBe<-z zWg~Tgw%6(!OYYBgKIi-bGLy`W8iU(QP-g$?qNW&Zs#x+0u%0q!T_m9g@6dap#@lqN<9L|3t?w6x5*bV?xDVB(+eB3-o`j4HU`M z{stw#fz^fSb@{%Jx6pd{#PQxr<6WDF(777SxKeRi(~>dd=yR(px16N4RgcTGtE3GY zky{?Q8nH?WdXB4GISKlaV~ZrG8@VJ+MQqkuEWbMcM(k~1*>bhf)QCpGF*1s=v!2|o zY@m2UDsKB<7|*Q5{P${WY7{w3PENIG8{KGuX{U7Pidjx$tvbp~GfuS*Ys?zy06mQ; zj!h1zhHfEKEi(2N^)wb)v{t#K^+Rb%JdysARwxy^r=}>qVLn^jPhiYclGfC8Qd&&V zvC>$vo+xB8Mp-Y3ncFFzRm?1}`<1hkTb7a4YN|XjX_BDHh#8{+?h~Amj29WcraLM} z*y$!1X}ZWPRjcX^-B4>>j#}TSu?nj9 zMW@B_K&Zx&c*DTuLz)?x%9-7Q-n6vg^`3MBap@{#qRwsfE1T6?H&K{)TH(Rk6pJ)g zS)!QNZS;OkGM%8`R>!D`A3UU~R@IZeBbN5?TdcXcx;3rARB|7r z_?2qpQmr*L{2I;dJu6m(A1c<26#AkB-M=C;i*3riIJj@)rjg-|BSTv@46PX+7#Yfn zQFInAk{we?sVv^iuMFBEHY8w6MFduFK8_Wzb!c$Y#x(<5uJLVF)5trBH_K-@m>fjm zV3SDO3CAXLM@t($BkEGA&lps^X#pvgO!eDXTA&^quA+N0ill){U5Xc>_o#1onA*LF zDO_WHq2jJDO3AI2FwmeQ$+W`D4Hky+B{)n0u4?%eo5t*Wb7PW}SPYs*=KCz}E!-d~ zpk_LlgRO2NY?n)?$ux z9T?XbKeoba&%To8-%}~g%((OOTv_f)_EGaCezAg?BdunaFSBRVkA9r1x0q#-R;FeO z>uMIXPfbRk>to54uBNBcQtejE(IrlF`qs;a)~|=dwEir`y|Oeo30_45)Gur|>K!N0 zON-;x%zIb}SpqXmo5|j0+`F(gmRSAqkfg6>53`HxqJOJdKB{jnN|*)rdFiH)Ys(3PODtg{ z%#4{d%qrNA@FVwnYr45KHQUjHElubs4Njrh+f&)QBram4gJ`nQ8F%!@>yzT{xhoc8 zbgS2hEC|iw)O1^uSH_LjDB5VVrKNYMWimD0+~=ri4fYmJWRX?^_NvV4e}XQrITK}} z5ciBZ>Xf~FpZUeVS=2Ko>S(Ujx&z&xF$A?)BC+W6xT{Zk0n@O{vwYBIs)qGOwU0J7PKlxrTQAZtd~kO@#@w zn6X`nX|-7kEQfa4Z=6UuEtKuuvP_s#SaLn?rkLp(i$6Np$*ge{OHHpT!!)tfg54hW zR_mU|dgi1mwyAZS*Y7_2tp0f2#%=nY>hEVu1C-IK9$z%sY)&`&moA;Cw)$%IiKT4W zC~afu#B`-^vN=_`7?Zyl%Au;n3+m-~6H_K~W?!uZpCs-z)pZitBqLT7bhdhVl(`aX zaGzy@0aM(waZ`NNz?Llo8%MA_l1v6DWU|%+YyeD^*$OJjid8AfV$;)LBf``oqS|`H zD+wa64dgk#FTw1Slw5Xc{OwNqTptg~_`u{Xc|cOJpkx!DOT5$qO5dEy+-fFlcr^<==RrbdU1Q4tBTm3l@j8%%m8P*bFyLd z@n`wS;!T|XxNrTYt9EP|+PZ1|wvpjY8+VKhZy3tT)b!8PG07r}^+cmqK{5tC)8waR zMu%Si1e$BfW@+bCc`sa(uF8&=4d!vHv`?P6^jSEqF z5-X4xyq;k3vt5kAkuB>B*YJT|B_olxkJb#XhvaM}0%7~5Rsg^hY zu-{c_Nj^n=R}Bo0Ac<0S&sybI35{7k=NCbZXeFAATHCRhk1n!hdbxUWG%$+9g9`^t z|BiQ;YltU$x*yufW`SIAD+~;Knu}!zbK7MzQ|zf@@SQVBrC6Ve$11h4UD3d_R;+PP z-q)fU@u{)0EN(}`N|4D7CzO;D$dVS>pEa~M-BZ?809=t@?)$otmR4&Mno zjC&*m_hA2>SQu+pd?DIci>SlvS&7DjYpf_!S@&tRW?PNXYALC1V3-bD)lThUmzqHc z^EyR!i9nqXQ@vN$Yr9x4PqU>Kt!Cw9_SI-`^ES6)tCSJC2$V6CmC>Nne8(U?ghXLS z17Q!B#jVD9_^hRh<219XZrU-jVYBQDn(An|&%|P7dx}o-MuU@O)G}Fw>GQ#IeXK>7 zkS@N6xwxUR<;)2C;!?dv4`CD-RL6*kBoV0)Tl^_O)Wo^Jhi&2Bo)Y?7XI$5~&J1gn z3R{3|Dy(AGUdpqor*9dj7otJG(V*J+xhNHYYB>Y8Ty3dk>6n3G*#_5M78?}x?jOq4 z?(bni_d)uZpJGRgW4k0-I1RzBuPmFv)D{g|w{51Ydl#q8PSggqTpz98X`gmB+pkBo zl#d26`qrjkRfR3TUhHTBPYQr4fj=3Ppj7Me>_xTdTOnRQvvPi~> z6P4O1)berd)Pt3sMe`U)=F0NlyY%~7nImkD?l4?Y)%26rs*GRTsA7UCRwUoF zy<|~r{ns%X)6*?&GF8i@u66K7Va#|Tie-(U3pi-SJ&@Ky&01|^<0=hW)x;q*{2R9vrcwWhMjM1!VbtC-%&1_xS zR$2^vP5riq-PWvi^;!!V5k5^P@S{}&8l}zev?eZyE`xJh)6wwKO|dhx((d6+o_~k^ zifS0EdA()ocQov_nzJ2ZSBkn+)EgHy`iMpAr`&9%^#&uKcYdMCFK2HPn?fWVo05)3 z&>7m)-Vmp4^cW?=7Z&v8sn%4wNTVxd8tCoe1dg&zQ|5A;Vk7iG(>ymE8DTywOQYy* zu=6rKDG_ETW3mVh+w(M@RTnT%mKH>pYe8Cy)~jhW5Lw?dZL5=b^RT8j{#y{OXW(~; zR*c?yOGdTPojRIARIkUBk}>88R|FcYmNQ|8mVWc88j}_!P3#KMFqk17^r^PXMu_^s z&Du7TA?DnY_1PkKSA#nfWanR8Il1xCma*f8f@g*Hft5?MAupU_w*$dxscEOt zr@K40P1YW_jaQ@en@LRcX_>ImdaE2ti2YGKQG5?;LPZv}Y+$)XEz&DHelpJ4CYrsW zSfQfW%l&BVa-z@9zu4)NXoDG-El-ozFv{pYJ9Izmy;N_hq#-1A z0<4kynIpAZXQX>E6hO_0>ZOZO%CfP8HL4$DK{o%iDt*zWQLPuO_EP%P@U}5X`b{Rx zQ6QtuZAV9X3p*FvIzaNQ(VEtLPeu~Ec8m_CT)o>DZLaM>$c{5zwCYK;Id@>nF^C3j zqA0dr@iN?yw!?(f!s0qrWVVG!cpDuB_$~mzf+Ct7SD|C5p^K zt+o=KF)!P?uuRi4d(2|ZMp7A%dv!q4EwNPvZGf!mX)*0>Ni^TN3Z!bJnGVxkU|y#U zo}o`!oew07C!W%VQ1|4l&9qg~v{hy|fwP6JZd2kq*a~j9xhL>?8gItD8W`D3qnwVl z{X`516L$LXQg6PzSiJ6!u1PwI-Ju%`P&OQQE?;bmiay1uwd!o#F(8`J*5P&9UL4Yo ztA;nOiQM@>b%xqfOcf0~3N~W~-f$s$+w+gM?kZ2)fZH~*ws1kbdea8+dfP}{ zFkd8hHDd@{{TzA~d&-`J*->@agiBP}2sqngCS#SRIuX zy^< zImfw=6E^g-na#9UvluN3EaKzNI&`;H-JV)zp((c5>~yEW)lt#5s>q^B&Qz|qX}d$8 zbUr#LHZt)ph|*7i>CN=Zdrly;p3tI;Ww1M>9BtDfK`n6N?QYWrbMAJ>Y}dywJ5I3c zD2wSej+f)*q?`G61#eZQusFz#Sz|n}y6U&8X>r3*onX|=l&Q`b9eQ7yLq0<-hzFk?aYbxka7*fml+SF*Ef#J?w@X698Y!)6#>(T^fk@%@T_ZZZrX}lG#C}aWA!;{0XRFW*-OxcS z8(&n(Xc)2O?e`634Y%`1PKTH5)C31(FwXn6z^!3JO!iI|QRk_iOUXGfW!feUtfx}( z?L~xMwx@B@J@;8Hosp5!NNyxrn48SUqHGIRjy}x#&8uO^0B?NO2rzqWNMi;iZy(kP z?zCrZsqQnLE^-qg9M$d;iwVd$-=)bNtBSn&wcYqCm4nB96q}3joL$%AhgWvrgYy%9 z(cT~T`n|4-+1eIIp5>!b%jT&p8!^m21c2?jhuvd3+dAFMcrHe`z2HoHxdY8n?zi1# zK-wk|`+MBZNOWw+`Y{)_^BBc(?M7O^XS-OlL~?QZCC^YO+@>NE~E(1y&S z9f+zX_A{cKg~l4}`(7InP~AnCDsv_e(ko;Haj#QdGwhrzKIf>=l6RnyxT7VQWRcql zSa&l^2V8tlxbHfcfz;@lFsL=%6VzEDhmti67VW9knaxs5(3FiihZ?PF|3{*MUfzUfgS));Feh z9BexlSbVVvbCpmtM|So!v=+Tyb}!nTHr80oR7lyzO+Dy`7i|lUcs6n~k(~|`tJ=)5 z5;%eb*1;}T@YAG?5?`8Q8_w?{3kpuk`(e};VZ1y~S4E+`Sz@v)(abtFjXgsW8Ow&e z+yTXz95PF0oi=zsPo%loj;AJ{bP~t-4|QN{-87R8AI|2qPE;AKpH8Rl@bhA}C*idf zrXjoHSF)HID9m&mg3Kb)VK%-o2f9y`J6>CYjLOoQjRww^8Q3i`ra9E8b8Z}`K}p_| z+md!)7DPcaiNb(hJ==R&qPVY;46N1FLBk)1o_}eF4i(^u@*{i_?@|`3}3e^K4L)Y{mw*2$nkus(Lq~ z^ol`y{*9!ng)bw^Of z43r)9oM_~_HmZ{&>-3y>O(owu8Ix+It`?y2scM%L#Q0Au4gJtUtg zf9O)DyIC+JhlvF3A9!Ar+%$WgG)(kUHo&EXwsUG*>IYn*5y3`4yaQU5A>wuYUKN3tCt~;@)=kQYWnam-Y`~ z@U~4ix>p`|>M|^zywb^O#6{$mo1aoeJhe7P?zD~96LZRLdPu<4-k(?M=RSwd!o-bT z$sS}^6S2dIi#Wap8=2h<)sCl~8{@7Bw<2|5tS?Ga7k2j8_6k>%)rDbN)zO`xvZi{I zX7D-Ea{N`v4=CxNTh$fExT(!>_v()tvLt7B%4tQpDsS9o$Hy_rNEL2ymt>`CYln|z zDh?LvtdVB2miDR(X=-Yllf{BA@%!U7 zK_g*vAHNM+_0Bv5Gqa$X35Tm)(%Hc>znVbfkwW4Qo2A|6!s)cUxn7e^zA#)WTY{jx=3v@}RfU&XKK=9S-{V^u>R->@4ILgdbi3hm_(TXp^ z7}{z~xOaVA)v2^D#a3Id)tWj4d@;FjHUgtuVI(PXU1$r|p=ud5^&+j}m9wgWvN~0$ z*Dlo>qS5Cp>Wqnrq_3JZvpg8hwFMhE)|t^@dEYX8cOb>M|2%>;)e>`Wb1AaA%t*w1 zh0&zB%8ch(Je7W)L zkZXUqrOZIoeBVa0a7eL_^v?N=^~L5I$D*6@*?r6Vmg8Q;eCUkrzqO3ijlmW}CW*gy z^IOfW&i8J93-(19sh&)3t+YHj(^JIWl>)~BsfA6Y+h7`}Mp{#!Y4cO#cL&~Byh7h^JrKXsot`BNW3O*Xp) zsRoNEnQiUyj&aDLH&ln;w9?N1(8|TZ@y?cxR;m`OXD^j&8ROKq*d#lvfZ}h&PQXcY zYVkNLVZL?N?!UE8Zk^mJ<T;@~#oY0B#U-d6UI6w8F1|dX2hzk3m*j4R34~ zRfvY{>Fzyfc)hzH?z{)NY-MFpSDN)lvPBtJT4M|*R|x0!5hO+L0YdlWr{&2gb2}66 zoUci4L@Q&VV=|{UO|@E8dJuV0*n_ZGqQxkOg-b=a1u8deMu9WQ~}N!e#9rL?=dq5({N z%`h!sgyX(EV^Rm@ME-AIaTdub(xCU z5NdLQ6*AnZRWJ&#@o47BNUjIcMNaAtXdcHGTVbfFQR+rrgG->^R%Njy2>J-c!OKO3 zI0Va-T2IV^TrY}Pt_DN#qi-5ES3Bm}NP(;?%=GPgSRX9wF_Fa`X|!xqgr-s%A6%B1 zn$ax_n~1~F07D2c()svz9b`5-G4DWD43S#>!!3A*m^JYKi-grH+OM{#LIaaxRok9S4bu*%E)*) zPKt>WJ2rH5yiFq;QzgWpC`aA7+#m%!WQbU@^=ye7dtLss$3aZ>s!=Q}BV*XBOS-p)f&RB}6*4y7bqeTl}f zl1!Q@Y<~u3t=3wu-Sc@<^79>@E@ZqSWqxCxvFvi0!?RLOeqoMoRp1_N7tb?qJz+OX zsiNg1q;!`S5|}cL%f=b5kcQ&B3?kPSxn4^9Km!^FIB7Tx^6+lH9$~6}^bSbxvp}(x zs*86TUwntun8Phoj*iGxR3K)X;!Ycom^6Jq%;%bkrYGE))KnzB)6bl)-E;V6!pR;7 z?~-_9IyfZ~5FJI9d*jFq@(r4swqLwXmuI*zs$E%g_-%rTIg`>-j`^7hC4x%3iG%Dp z^3R#tvI>_w2bb&b%7xR$Rytcu6%mazv`rggu0#to1xB+9?RS&D4Ki$C@kUplszk{D z$*B`Hk;U6sS3FzfG)UD}NUrPl-?|bjEb0_zs8fZ=6)xXSDcfT83htfKcV4{k=|Gt| z6E8mNFc*%OvHhUR;qyvfhM16zFRQHr_bu_GGv+&J4u?-U_HJ9KIw37?NLQ<_eRFt! z%2TbATCBV@$w>aV2?r)EY2Nc4YJKQVeoNmC)7)I%q1q-KxAcTngC;9Mmz!tU(wxmj z6xGf;F^tWiPt4&bYQWB^2YqgeeSqRllzE!S)IQA$GU!|AqEaWYvBr)4w-%@*=0Cr3 zDmI{jqwE~Mq;kFFmTi=SGTA`KXRSnusYT&Y6opJK?NO_{uNZP!2Gx&Dxn0jf&gz4; ztjH=Wl0n1Fxb&6w5UIYqfyC0Hrx9k_S)5C;d=0*(n837p_1&`nR_|j9Z5^?r1+7~) zqZ8rO&kgRTIe==}qTB|f!V;jNXmdVQrkc+C)NG$J4^%~;r8Q&PlwzbAt55tx;;P8X zlXU=D8deJ_N9iL4-$auo3DMc9F}fX#WheXsKv85 zv08)L&Ne03CIZS+18=#KYLdSq*u2T;fbJ>R7N@XW z;Epy}P1AzCXRZEp5Su?NnfvHz)~y%`%Oz?jk%>qc6*U=luvO+?iy>&PwYF&$Wrb)F zrSv)mM#VR=#DW+7>dG=sYid&y)>z6whFZeV-jO;Uq{~=+`G&VHe-%mmV?)1igT{WC zs>-{ShogTO3FA0CCT-|9^PA?35WIzJa{jn{pNp>;`8Cck_|Bf0sKYat%r5Tcohc|H zlvhphwW(W&2Qa9(#)=5D!|K-4POmYdxeGJJCUnG@DNoYVwHvjGZvMJ(*HtKY_t!OV zMB^4N$#KXDsVgzh^(ZErnFYx;mn%ufI#OR-`MPvQnLBefYcx-w1~_-ac@JJ)zs;4M zd=t={X-km!=I_>;;w{9?U^X*@GxsONq8pK2S{>HH!d_zb|7M_WOYbeR>igCvzDl^5Qd0>j*ZbILao!VH}%8Fp7>3st`rd~_Unc+q331pFq(I~as%hQ?}^_@1l|5n|{U|dPrYV$JY zO|uMaZ1};~Sdmo}=fzNU-OHuOFq|MN6dZmPS-&w|;vP_WKOU!JX;!J*G0Q6$iMwSt z)>a|(h+KsTr7p-!`1(^(kU~2(PMjLA8>6BV1x*oZrE%>bl|q3-OmY`-rRjA&^0I9+ z#gQ(Fkqeq3wVHM8q-mZqS+=UR2J1@a6{;<68qLiHrg*w&gOA)ZHJy8FN`VFzMkEf| zg?WV4cj(!)#*h4w3~qQbW9!cOGD8xh!LZz83se(?{FzCIoz0yYb;LkMdm7H(Fi(5h z;s#>o>h4;!!Ilylv$l{h`96c3I6b3@-tQTeMpGAoL&xcA$^KjI6~m%Y2-1qokVq_5 z>{Hk$h_OuI2#p5kyn3Y{vpKoTS0@>8hUV2`XlXVJC=pB(u2mtsOqBSU)SRMek4g3K z5(~aaIK)Ne=FU?N#U58B%}=H%q=91|xIR z6HLOZ0nS?um>&33NN)~ZEza&$Cg5#%{Ar)vYU(ot&@0p91D z6Sp{u)DbZ1@4}|$J#s%QPw$LXUo^953ex+`8=E##0s4~0i4n@@ z9J=4~%6V^dlD*x18-nZr1+#P0))s#@;haWolY6tv$nNpG%E{2SR2xs%dFdC{Pe^z4 zdFxN>HjdaVh+KYX?;0P$3mjs=e4=geD~@7a4o1q^5K4^&Qt|N^VFm!L`#HE{Df5#F z-7RNu5Xr{~tNxsYq>n9umW?9(n^eIF;hf7&)4(ifw zf$M@QW((_?&go1sPPJO;2%M?lUwV_Vvp>EehE$K2R5YgxqjK{Kg1lYUVS?W8qIBVhR8hnP$os0=cJ>g zAG3W^Eh}-hwHv)(CT>56nq@Y#uLQFT`l352W1q4q8j0bIUz(OX{oYxh`=wOg_ub&8 z4FkAHkIkL(#{IX57uUdts?Pw2W<;?D_DF8R`_y0KD07joq3{#b3)-pZA5f9rHa}-qFqA|aPr6pxr z!C?1DyMi$Qn`sx4c-Cv_vPGxN&BhY8kDR5-aS)%(1JkTYU^=7Cyb)!r5Epfi=nWz^ z2jYxC2VZi!3EYm9;y#}_3rxHx!HmYim!QauKVY{lo=(T}b+HVZ!5|S`X=fwZi1CMl z+$iJF2;>dMfErt82zj}Q!Pe$=c+H6t4yhZ$t;v+Gdcx93*)l#QU|3ybP)FgE5Q^GP ziEfCxY0rrw;^~Xhxic!bGN=T}Mu)p4rtZn3dv4IhL`4lVGkLq|)jLImBF^UM28I~M zks8NOUDvL@P;zAeY0~w>uq}2vaD%DKJ26b_%n2K-pHEd!S|(-O#;Ld<#b@l3`dq6Au|=AGq$yyxf=UGXSMuWKhK8wH&^|@uesWZ zjy_#iV|<7z-FwC+X!o%qdeUv)CnKz$YCMu3DV4hM3Qop2>Tk?2fsslS4tvVEg^Bn- z%Oe6B4o}4*~*i6is2*9r+-?g~c@R$8F7>aU? znhp(j7B1}v^`z%rM^olEon|vVN%9~&SD8rrOHFYRqdIT__AKtmgr%|;Wm32N#t^?| zkx<@b<;S;9Ychgy{%B&zyXfcKsxH9$sG$rm>QsvIwv>qW$C+}_{6E6tL2KwZ+G~y> zbrH(kLT;7x=e(Z=+$;&4?!&NvX>`?d6X(w#xxXp@X^bYXckJfORTqzuPCK^4G97a? zd(fNgP^=q_PHda|$UuL8*b)&TW|ex6dI&3uRb;%e0hmgBZi0pExMbBV?u2JG-@x{Y z!$Otu=Vpw&@OHX~J9wGdM^MZ%zGeb*-X#NrOZdoCYo|45Nz`p2JxjWreCV*Av?Z7+ zP2gj051#jMNJWNkVT6K=w}R3>!h6cC{#s)^O*A&LbxGwWuKGL(v;ymR@X03zh_;Be>?`t+$*> z;bYssvr4g4e~letHc3v-VMj_l;jfVL(`FeK*hmxZBadmN;Oq*iV6oYr`-C;FArjk$ z1i|3-awNBj+fbFm%xq_ET>fnfuZ=Cu@SvIoiWY*kfvI+@p z0?ZpE=5I$NW1+@@c895cN51Z0m__M+rXb^*7u=#bjVWHNjfzz?jc||*iL@J$;^R3T zqgC;8(aS{g-{dYvlsOT!KAd+(=LyH1&5~GR2Tcfb=>b#=5%IF4HsG^IZ zrod(T#~C~`(5M_Kd?ho1nu+c%O_K8Gou`Ha_o=~gH!0Jy8=CjHvc@~opkz=F^bFRP zaj#WL94DT%t4!@aRbf5ME%I-sAB^H`+*=Yi)x!^V(~7Q3B@ zdUaAxht-}AgQ#fRv9M=)r+^;n=F(L%#NWelO&}iI1_(#z;Z;^cGiAb(&d;lc75kUc zNWBC>`|9H7b*A2}Niba)*a?`Leam!o|K%J_(HZ4Asnht0!V)ElUCk1KaCge=h{onlm zV_#bwf?nm0@gkeOb4Ew^P6mifVa*-V%Y>_&1F1r&7iF#wSH`q}OfQYiP-NH;lg2Rn zUCs4sdt`?hbAw*&;Z_0e|ICSK-rNntKc#BX->*f5WD6xKa*z!<(Lg1`8Oc!ZoP7XU zwO!aAd#WvV5UuSPi5=Ud0^SOu&T(5x)<*ehRsB=_#H)Rj z(p~Qh3Ytb|PWE+9YNkWx*~G1#pbu5a8&zyCF}+f{)TpcJg0z`QWH7y+qrpix@>Nr^ zGGm-u$Stou@!OTqAeeKcn~~7VdfQkuT`BD-t;GF#UcGZ;$m@C5yX18icVzIV?pv-cV_Om1LOZkE(>j^u zEz*iPB6(xKYn|`DE`m4^EjPBpE5`(`WS5QK{ewh-XW;U7eQjnUx9V&=Tt06arY3n> zFhlS>y=`5TujDA#E*MC*3B;bWyU!}gLlsP%qNvI4lwS~FIySe#*$SZTWJDKvuMBZ_ zD*j|p1m8wbe|^N>AcR*Ojmfu zN-KK6+4^*8Lg~44l&gH*HgVCMFXlFr)k`ee#84bG&(SFt(bQ!pW_?sYIdCD=@37Ou zc2oh4CgdT~q}xyj#JD^@AibN>7?{L6L!L*e0**X6)|p;YxjX|UJ%_WwBT4d2pi?&{9{ta zfs~7R37)Up1|)Q|WtrPFfXU%WYqxJE9pl0|%Oe|?kn%ZD-5G@OK?RJevb3=0M__uT@12KAC6lLI0)W1dV?iwmtlj z&@^tPj0a7fF*DjRFw^{Te3Zt@t%}1T-y}+RPPpwp(|@zuzjs;dR-B1d#+|zyp)E2= z5Bql@+I>2^t!G&X=E>C`eV#olI*ye*8mjvznq{!hHn!{WBMRZpYPa#leneMqG#WdIKJvgBAJY{ofw(^q({HAEsgSZlC_X}& z7X@uK%c?jWK6WBGm67uaj#S!rksu}o!e(A5*KNwU{x+R9=w-Ij@AOQqk^Y3T$vLl9 z9tX;3ZSv}XQpsnWShPK*pBvO4vuQ)=8Gf4(;QUgJtz6EO%rzLgmxeB6J)gSW39`h^ zH-Yp~diXLe+teo17So~8kt#@g`MqXPQuQ#EI2q140hZA--CzfEq69TEMM@xdYf3ZS zU_&CUKHQ-W4Q2C&jd>F$WOAC)nL=~OfUOJ8G{eY}kR{de2mD;_9Y&n=y0v?c21ae1 zp>+wz*X+KxtOU8!y6$VveRd{kp_muzxM?B~<^#H!!#Fz4i@CZpdU;%&mc7lkK$-rF z8fR*~%#ukt7cF(9-Kundi?_LgoqIL=p-$Zu&C52q+6{InV_vpJJ-OL-_dA18B64Q` zw$+1F(pgUEX3@#kvdXPGl#U)oH-@d-PxfZ+w=I#)@qU?woZ>%hMmqGwXrUKOEz<=E zahaFMB++$6J72;vAW~?v&fVzq{<#AO*i7Z+S9&n)cU45^9_;VD?rDwZ6H2fQPQWEx z{O+TaCC-FJ2OunFO>0gvP|?KVI0jel*j{9o%w#~2{;9ee%tvrh&b|W0z4H;jW;S&^ z@Ho=bJb?#K;lyqq{qkw22{nx5%w>2wS$W^#_)0~Gkg;Ez1F%d^>s83_8%El~F-^(E zH73kO)nSehmyFWrX*0v3S?anxWQB37BGp-bw+n6EnV~g*YIgRzHTqJJo~Ambg>{)5 zHF!-Hv7af4*_H_>!EB4npSX5ANL@0)C%N}j&M!urliH>`GmZGe3_5G*mWWZCtMa_q z*7+41t=an21|ZEge}!I2WDs`-;stl}YI#kIjCd|?8dEoGTMiw+0HF5$vx(nO+#39p6?$KB%?ClzC4PZz?JCw6nhbmsr=refzkom{fAqI9c|*YbCeyZ^_6Rn|!>0cr%7l4(67 zyibaDZAu>DpsHkEKk#4v`{N9|z3Ofh%Djne`%5-U?Tlj5B4>)Bo zDael}6$vVh6%tl=q0jn}ykP~Zcj9rh1bN?NM7f&fR_|GEupoV%HxlN~W~auDU}nhZ zQ#7ZH{(4kA;2dK*Z|){o%-^7{hDiA85QusQf8vAgxUbGdq9E*U^m#thMs{%bt}`NS z`O_k~eb=}}1?5hFyPnMJU}xr&?b6tOhPlvl>o^7~GRg^ju|Swv4y=IGK|CaSf;n%@ zjioR!QkzsTx}raeZSxyUd0x$|vmMnAme5!p<^%DaZ+Tj+`4w}iiA3{6ggV?tRtgOs zitJQO(0pMRzaZ5>&RvL|HF1yDV#F3SjGL zyEo;gJY$dLuz>li*DWN|#Cd&|ScXAq25`K+f!Zq+;{hjA2gH4;Tb<9aXMs+yE6ys8-Hd>zp#*0clXoyr_|tv X_G>8i$yA!4@~Ovz42bM=s#pGhTJLXs literal 0 HcmV?d00001 diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..2a17574 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,2640 @@ +# Mesajele în limba română pentru pachetul make. +# Copyright © 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Remus-Gabriel Chelu , 2022. +# +# 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 2022. +# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 12:06+0200\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.1.1\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:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directoare\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: nu a putut fi stabilit.\n" + +#: src/dir.c:1122 +#, 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:1126 +#, 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:1131 +#, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (cheia %s, mtime %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispozitiv %ld, nod-i %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Nu" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " fișiere, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "nu" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposibilități" + +#: src/dir.c:1180 +msgid " so far." +msgstr " până acum." + +#: src/dir.c:1197 +#, 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:272 +#, 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:277 +#, 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:281 +#, 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:284 +#, 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:304 +#, 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:310 +#, 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:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Se șterge fișierul intermediar „%s”" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Se elimină fișierele intermediare...\n" + +#: src/file.c:825 +#, 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:840 +#, 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:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE și .SECONDARY se exclud reciproc" + +#: src/file.c:942 +msgid "Current time" +msgstr "Ora actuală" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Marcaj de timp în afara intervalului; se substituie %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Nu este o țintă:" + +#: src/file.c:1094 +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:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Țintă falsă (cerința prealabilă a .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Țintă din linia de comandă." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# Un fișier implicit, MAKEFILES sau, unul via -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regulă internă" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Căutarea implicită a regulilor a fost efectuată." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Căutarea implicită a regulilor nu a fost efectuată." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Familia modelului implicit/static: „%s”\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Fișierul este o cerință prealabilă intermediară." + +#: src/file.c:1111 +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:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Fișierul este secundar (cerință prealabilă a .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# De asemenea, face:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ora de modificare nu a fost niciodată verificată." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Fișierul nu există." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Fișierul este foarte vechi." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modificare %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Fișierul a fost actualizat." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Fișierul nu a fost actualizat." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Rețeta rulează în acest moment (ACESTA ESTE O EROARE)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Rețeta de dependențe rulează (ACESTA ESTE O EROARE)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizat cu succes." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Trebuie să fie actualizat („-q” este activată)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Actualizarea a eșuat." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valoare nevalidă în membrul „command_state”!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Fișiere" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistici din tabelul sumelor de control ale fișierelor:\n" +"# " + +#: src/file.c:1196 +#, 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:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "fișier: lipsește numele fișierului" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "deschide: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scrie: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "închide: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fișier: prea multe argumente" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "citește: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fișier: operație de fișier nevalidă: %s" + +#: src/function.c:2527 +#, 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:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "neimplementat pe această platformă: funcția „%s”" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "apel neterminat la funcția „%s”: lipsește „%c”" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Numele funcției este gol" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Numele funcției este nevalid: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Numele funcției este prea lung: %s" + +#: src/function.c:2798 +#, 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:2801 +#, 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:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opțiunea „%s” este ambiguă\n" + +#: src/getopt.c:683 +#, 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:688 +#, 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:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opțiunea „%s” necesită un argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opțiune nerecunoscută „--%s”\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opțiune nerecunoscută „%c%s”\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opțiune ilegală -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opțiune nevalidă -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opțiunea necesită un argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opțiunea „-W %s” este ambiguă\n" + +#: src/getopt.c:862 +#, 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:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitarea recursiunii regulilor implicite pentru regula „%s”.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Continuă să se încerce.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Se încearcă regula modelului „%s” cu familia „%.*s”\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Familie prea lungă: „%s%.*s”.\n" + +#: src/implicit.c:768 +#, 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:770 +#, 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:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Se încearcă cerința prealabilă a regulii „%s”.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Se încearcă cerința prealabilă implicită „%s”.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s” ar trebui să existe.n\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "S-a găsit „%s”.\n" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, 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:886 +#, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nu s-a găsit „%s”.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "S-a găsit regula implicită „%s” pentru „%s”.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Se caută o regulă de compatibilitate pentru „%s”..\n" + +#: src/implicit.c:1157 +#, 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:380 +msgid "Cannot create a temporary file" +msgstr "Nu se poate crea un fișier temporar" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (conținutul memoriei descărcat)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorat)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Eroare %d%s%s" + +#: src/job.c:677 +#, 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:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proces-copil viu %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (la distanță)" + +#: src/job.c:914 +#, 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:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil pierdut %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Se curăță fișierul lotului de comenzi temporar %s\n" + +#: src/job.c:972 +#, 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:1083 +#, 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:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Se eliberează indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, 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:1587 src/job.c:2501 +#, 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:1650 +#, 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:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Se obține indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: se actualizează ținta „%s” datorită: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "ținta nu există" + +#: src/job.c:2104 +#, 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:2106 +msgid "cannot enforce load limit: " +msgstr "nu poate aplica limita de încărcare: " + +#: src/job.c:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nu s-a putut restabili intrarea standard" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nu s-a putut restabili ieșirea standard" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nu s-a putut restabili ieșirea de eroare standard" + +#: src/job.c:2530 +#, 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:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: spațiul de mediu ar putea fi epuizat" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL schimbat (era „%s”, acum „%s”)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Se creează fișierul lotului de comenzi temporar %s\n" + +#: src/job.c:3314 +#, 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:3522 +#, 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:3630 +#, 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:317 +msgid "Options:\n" +msgstr "Opțiuni:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorat din motive de compatibilitate.\n" + +#: src/main.c:320 +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:322 +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:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Afișează o mulțime de informații de depanare.\n" + +#: src/main.c:327 +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:329 +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:332 +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:334 +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:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Afișează acest mesaj și iese.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoră erorile din rețete.\n" + +#: src/main.c:341 +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:344 +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:346 +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:348 +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:350 +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:353 +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:355 +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:358 +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:361 +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:364 +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:366 +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:368 +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:370 +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:372 +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:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Nu afișează rețetele.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Afișează rețetele (dezactivează opțiunea „--" +"silent”).\n" + +#: src/main.c:379 +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:382 +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:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Afișează informațiile de urmărire a " +"execuției.\n" + +#: src/main.c:386 +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:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Afișează directorul curent.\n" + +#: src/main.c:390 +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:392 +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:395 +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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "eroare de scriere: ieșirea standard" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "un șir gol nu este valid ca nume de fișier" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "specificație necunoscută a nivelului de depanare „%s”" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tip de sincronizare de ieșire necunoscut „%s”" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilizare: %s [opțiuni] [țintă] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s\n" + +#: src/main.c:906 +#, 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:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Raportați erorile la \n" + +#: src/main.c:940 +#, 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:947 +#, 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:955 +#, 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:956 +#, 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:1028 src/main.c:1042 +#, 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:1098 +#, 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:1151 +msgid "unlink (temporary file): " +msgstr "înlăturare (legătură simbolică la fișier temporar): " + +#: src/main.c:1833 +#, 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:1841 +#, 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:1930 +#, 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:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: fișierul temporar %s: %s" + +#: src/main.c:2095 +#, 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:2191 +#, 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:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Se configurează la modul o singură lucrare (-j1)." + +#: src/main.c:2248 +#, 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:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Se utilizează blocarea de sincronizare a ieșirii %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Legăturile simbolice nu sunt acceptate: se dezactivează opțiunea „-L”." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Modul de amestecare activat: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Se actualizează fișierele makefile....\n" + +#: src/main.c:2397 +#, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nu s-a putut încărca" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nu s-a reușit refacerea fișierului makefile „%s”." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Fișierul makefile inclus „%s” nu a fost găsit." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Fișierul makefile „%s” nu a fost găsit" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nu s-a putut schimba înapoi la directorul inițial" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Se execută din nou[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL conține mai mult de o țintă" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Fără ținte" + +#: src/main.c:2889 +#, 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:2898 +#, 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:2922 +#, 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:3186 +#, 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:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opțiunea „-%c” necesită un întreg pozitiv ca argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pentru %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pentru %s (%s)\n" + +#: src/main.c:3665 +#, 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:3682 +#, 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:3692 +#, 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:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s valoare %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s valoare %s: nu este un director" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "se utilizează directorul temporar implicit „%s”" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "crează fișierul temporar %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "înlăturare legătură simbolică la fișier temporar %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: fișierul temporar %s: %s" + +#: src/misc.c:747 +#, 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:280 +#, 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:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Nu se poate deschide serverul de lucrări %s: %s" + +#: src/posixos.c:186 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:190 +msgid "creating jobs pipe" +msgstr "se creează linia de legătură pentru lucrări" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "se duplică linia de legătură pentru lucrări" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "se inițializează linia de legătură a serverului de lucrări" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "șir nevalid „%s” al argumentului opțiunii „--jobserver-auth”" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "scrie în serverul de lucrări" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "serverul de lucrări este oprit" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "funcția pselect() a liniilor de legătură de lucrări" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "citește liniile de legătură ale lucrărilor" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "șir nevalid „%s” al argumentului opțiunii „---sync-mutex”" + +#: src/posixos.c:681 +#, 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:855 +#, 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:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Se citesc fișierele makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nici un obiectiv implicit)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (cale de căutare)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nu contează)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " („~” nu se înlocuiește)" + +#: src/read.c:663 +#, 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:666 +#, 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:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxă nevalidă în condițional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "rețeta începe înainte de prima țintă" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "lipsește o regulă înaintea rețetei" + +#: src/read.c:1154 +#, 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" +msgstr "lipsește separatorul" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "modelul țintă" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "multiple modele de țintă" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "modelul țintă nu conține „%%”" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "lipsește „endif”" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nume de variabilă gol" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "text de prisos după directiva „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "lipsește „endef”, „define” neterminat" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "text de prisos după directiva „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "text de prisos după directiva „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "„%s” de prisos" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "doar un „else” per condițional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definiție de variabilă specifică țintei incorectă" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nu ar trebui să aibă cerințe prealabile" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nu ar trebui să aibă comenzi" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "cerințele prealabile nu pot fi definite în rețete" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "țintele grupate trebuie să furnizeze o rețetă" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regulile de model implicite și statice sunt amestecate" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regulile implicite și normale sunt amestecate" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ținta „%s” nu se potrivește cu modelul țintă" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "fișierul țintă „%s” are ambele intrări „:” și „::”" + +#: src/read.c:2176 +#, 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:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "avertisment: se înlocuiește rețeta pentru ținta „%s”" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertisment: se ignoră vechea rețetă pentru ținta „%s”" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regulile implicite și normale sunt amestecate: sintaxă învechită" + +#: src/read.c:2325 +#, 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:2683 +#, 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:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nu trebuie făcut nimic pentru „%s”." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s” este actualizat." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se scurtează fișierul „%s”.\n" + +#: src/remake.c:416 +#, 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:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNici o regulă pentru a face ținta „%s”%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Luând în considerare fișierul țintă „%s”.\n" + +#: src/remake.c:459 +#, 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:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Fișierul „%s” a fost deja luat în considerare.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Fișierul „%s” este încă în curs de actualizare.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "S-a terminat actualizarea fișierului „%s”.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Fișierul „%s” nu există.\n" + +#: src/remake.c:520 +#, 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:538 +#, 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:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizează rețeta implicită pentru „%s”.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dependența circulară %s ← %s este omisă." + +#: src/remake.c:737 +#, 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:743 +#, 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:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se renunță la fișierul țintă „%s”.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Țintă „%s” nu a fost refăcută din cauza erorilor." + +#: src/remake.c:814 +#, 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:819 +#, 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:824 +#, 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:827 +#, 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:845 +#, 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:852 +#, 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:857 +#, 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:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nu este necesar să se reconstruiască ținta „%s”" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; folosind numele VPATH „%s”" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Trebuie să se reconstruiască ținta „%s”.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignoră numele VPATH „%s”.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Rețeta lui „%s” este în curs de executare.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nu s-a putut reconstrui fișierul țintă „%s”.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "S-a reconstruit cu succes fișierul țintă „%s”.\n" + +#: src/remake.c:919 +#, 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:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Se utilizează comenzile implicite pentru „%s”.\n" + +#: src/remake.c:1499 +#, 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:1747 +#, 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:1786 +msgid "automatic" +msgstr "automat" + +#: src/variable.c:1789 +msgid "default" +msgstr "implicit" + +#: src/variable.c:1792 +msgid "environment" +msgstr "mediu" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "mediu cu opțiunea „-e”" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linie de comandă" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva „override”" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (din „%s”, linia %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# statistici pentru setul de variabile din tabelul sumelor de control\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabiles\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori de variabile specifice modelului" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nu există valori de variabile specifice modelului." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori de variabile specifice modelului" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertisment: variabilă nedefinită „%.*s”" + +#: 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:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Căi de căutare VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Fără căi de căutare „vpath”." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u căi de căutare „vpath”.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nicio cale de căutare generală (variabilă „VPATH”)." + +#: src/vpath.c:628 +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 "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"eroare internă: nu se poate deschide semaforul serverului de lucrări „%s”: " +"(Eroare %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Clientul serverului de lucrări (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "eliberare a semaforului serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:381 +#, 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:449 +#, 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:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "blocare de sincronizare a ieșirii nevalidă: %s" + +#~ 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 8bfdf7e2e58ba90344f7bf82a8229efaae463de0..ca777b8f47947e972e5ab7628a401da977e61180 100644 GIT binary patch delta 8667 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\n" "Language-Team: Russian \n" @@ -24,32 +24,32 @@ msgstr "" "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 "" + +#: 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:1107 msgid "" "\n" "# Directories\n" @@ -141,222 +146,254 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (ключ %s, mtime %l64u): невозможно открыть.\n" -#: src/dir.c:1094 +#: src/dir.c:1126 #, 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:1131 #, 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): " +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (ключ %s, mtime %l64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, inode [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, inode %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Нет" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " файлов," -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "нет" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " недостижимых целей" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " на текущий момент." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Способ для файла «%s» был задан в %s:%lu," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Способ для файла «%s» был найден из неявного правила," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но «%s» и «%s» теперь считаются одним и тем же файлом." -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "невозможно переименовать «%s» с одним двоеточием в «%s» с двумя двоеточиями" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "невозможно переименовать «%s» с двумя двоеточиями в «%s» с одним двоеточием" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Удаление промежуточного файла «%s»" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Удаление промежуточных файлов...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Текущее время" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временной штамп выходит за пределы диапазона; подставляем %s" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# Не является целью:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ценный файл (зависимость .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоцель (зависимость от .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Цель, вызываемая из командной строки." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Встроенное правило" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Производился поиск неявных правил." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Поиск неявных правил не производился." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного или статического образца: «%s»\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Файл — промежуточная зависимость." -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ценный файл (зависимость .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Псевдоцель (зависимость от .PHONY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Собирает также:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Время изменения ни разу не проверялось." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Файл не существует." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Файл очень старый." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Время последнего изменения %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Файл был обновлён." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Файл не был обновлён." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# В данный момент уже применяется некий способ (ЭТО ОШИБКА)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# В данный момент уже применяется некий способ по зависимостям (ЭТО ОШИБКА)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Успешно обновлено." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Должно быть обновлено (задан ключ -q)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Попытка обновления безуспешна." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Неверное значение члена «command_state»!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -364,7 +401,7 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -374,124 +411,147 @@ msgstr "" "# состояние файлов хеш-таблицы:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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 "" + +#: 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 "нечисловой первый аргумент функции «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" +#: 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: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 "нечисловой первый аргумент функции «wordlist»" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "нечисловой второй аргумент функции «wordlist»" + +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "файл: отсутствует имя файла" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "открытие: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "запись: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "закрытие: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "файл: слишком много аргументов" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "чтение: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: некорректная операция с файлом: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "недостаточно аргументов (всего %d) функции «%s»" -#: src/function.c:2417 +#: src/function.c:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реализовано на этой платформе: функция «%s»" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершённый вызов функции «%s»: пропущено «%c»" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "Пустое имя функции" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Некорректное имя функции: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Слишком длинное имя функции: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некорректное минимальное число аргументов (всего %u) функции %s" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некорректное максимальное число аргументов (всего %u) функции %s" @@ -583,133 +643,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 -#, 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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Избежание рекурсивного вызова неявного правила.\n" -#: src/implicit.c:484 +#: src/implicit.c:451 #, 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:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Попытка применения правила с образцом «%.*s».\n" -#: src/implicit.c:717 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Слишком длинный образец: «%s%.*s».\n" + +#: src/implicit.c:768 +#, 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:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Отвержение невозможной неявной зависимости «%s».\n" -#: src/implicit.c:732 +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Попытка применения правила зависимости «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Попытка применения неявной зависимости «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Файл «%s» не существует.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: обновление цели «%s» из-за: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Зависимость «%s» цели «%s» не существует.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Обнаружена зависимость «%s» в виде VPATH «%s»\n" -#: src/implicit.c:786 +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Поиск правила с промежуточным файлом «%s».\n" + +#: src/implicit.c:886 #, 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" +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Отвержение невозможной зависимости правила «%s».\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Не найдено неявного правила для «%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Найдено неявное правило для «%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Поиск неявного правила для «%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не найдено неявного правила для «%s».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Не удалось создать временный файл\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (сделан дамп памяти)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (игнорирование)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<встроенное>" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Ошибка %d%s" -#: src/job.c:662 +#: src/job.c:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ожидание завершения заданий…" -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (удалённый)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Подбирается удачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Подбирается неудачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Подчищаю временный пакетный файл %s\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Очистка временного пакетного файла %s завершилась с ошибкой (%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -718,86 +839,86 @@ msgstr "" "\n" "При неудачном запуске сосчитано %d аргументов\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен токен для потомка %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: цель «%s» не существует" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: обновление цели «%s» из-за: %s" -#: src/job.c:2108 +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: цель «%s» не существует" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "эта операционная система не позволяет устанавливать пределы загрузки" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "невозможно установить пределы загрузки: " -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "Не удалось восстановить stdin\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Не удалось восстановить stdout\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "Не удалось восстановить stderr\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: вероятно, закончилось место под окружение" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Создаётся временный пакетный файл %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -806,7 +927,7 @@ msgstr "" "Содержимое файла пакетных заданий:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -815,7 +936,7 @@ msgstr "" "Содержимое файла пакетных заданий:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -827,44 +948,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 "" + +#: 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 "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" msgstr "Операция «load» не поддерживается на этой платформе." -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Ключи:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Игнорируется для совместимости.\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Без условий отрабатывать все цели.\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -872,18 +1003,18 @@ msgstr "" " -C КАТАЛОГ, --directory=КАТАЛОГ\n" " Перейти в КАТАЛОГ перед выполнением действий.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Выводить массу отладочных сообщений.\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ФЛАГИ] Выводить различные типы отладочной " "информации.\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -892,13 +1023,13 @@ msgstr "" " Переменные окружения заменяют значения " "makefile.\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E СТРОКА, --eval=СТРОКА Вычислить СТРОКУ как предложение makefile.\n" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -906,15 +1037,15 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Использовать ФАЙЛ в качестве makefile.\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Показать эту справку и выйти.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Игнорировать ошибки способов.\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -922,7 +1053,7 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Искать включаемые make-файлы в КАТАЛОГЕ.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -931,14 +1062,18 @@ msgstr "" " если N не указано, число заданий " "неограничено.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -947,7 +1082,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N] Не запускать\n" " несколько заданий, если загрузка больше N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -955,7 +1090,7 @@ msgstr "" " -L, --check-symlink-times Использовать последнее mtime при выборе между\n" " символическими ссылками и целью.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -965,7 +1100,7 @@ msgstr "" " Не применять способ на самом деле; просто\n" " напечатать его.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -975,7 +1110,7 @@ msgstr "" " Считать ФАЙЛ очень старым и не переделывать " "его.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -984,12 +1119,12 @@ msgstr "" " Синхронизировать вывод параллельных\n" " заданий с типом ТИП.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -998,29 +1133,35 @@ msgstr "" " код завершения показывает, всё ли уже " "сделано.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не показывать сами способы.\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Показывать способы (отключает режим --" "silent).\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1028,26 +1169,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Отменить ключ -k.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Установить время доступа целей в текущее,\n" " а не пересобирать их.\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace Выводить трассировочную информацию.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Показать информацию о версии и выйти.\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Напечатать текущий каталог.\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1055,7 +1196,7 @@ msgstr "" " --no-print-directory Отменить ключ -w, даже если он был явно " "указан.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1063,7 +1204,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Считать ФАЙЛ всегда новым.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1071,27 +1212,60 @@ msgstr "" " --warn-undefined-variables Выдавать предупреждение при ссылке\n" " на неопределённую переменную.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "ошибка записи: stdout" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "пустая строка недопустима в качестве имени файла" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "задан неизвестный уровень отладки «%s»" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "неизвестный тип output-sync «%s»" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Эта программа собрана для %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Эта программа собрана для %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Сообщайте об ошибках по адресу \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1106,27 +1280,31 @@ msgstr "" "Флаги исключения = %lx\n" "Адрес исключения = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение доступа: операция записи по адресу 0x%p\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (временный файл)" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1134,164 +1312,154 @@ msgstr "" "предупреждение: сервер заданий недоступен: используется -j1. Добавьте «+» к " "правилу в родительском make." -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "предупреждение: в суб-Makefile принудительно задан -j%d; сброс режима " "сервера заданий" -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (временный файл)" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "предупреждение: в makefile принудительно задан -j%d; сброс режима сервера " "заданий" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Параллельные задания (-j) не поддерживаются на этой платформе." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Возвращается режим одиночного задания (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "неизвестный тип output-sync «%s»" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Символические ссылки не поддерживаются: отменяется ключ -L." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Обновление make-файлов....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл «%s», возможно, зациклен, он не будет пересобираться.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не удалось загрузить" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Попытка пересобрать make-файл «%s» завершилась неудачно." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Включаемый make-файл «%s» не найден." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл «%s» не найден" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "Невозможно перейти в первоначальный каталог." -#: src/main.c:2402 +#: src/main.c:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL содержит более одной цели" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Нет целей" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Не заданы цели и не найден make-файл" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Обновление целей результата...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "для ключа «%s%s» нужно указать аргументом непустую строку" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ «-%c» должен использоваться с целым положительным аргументом" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЭта программа собрана для %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЭта программа собрана для %s (%s)\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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" @@ -1301,7 +1469,7 @@ msgstr "" "%sЭто свободное программное обеспечение: вы можете свободно изменять его и\n" "%sраспространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1310,7 +1478,7 @@ msgstr "" "\n" "# База данных Make, напечатана %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1319,382 +1487,410 @@ msgstr "" "\n" "# Печать базы данных Make завершена %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +msgid "%s value %s: not a directory" msgstr "" -"%s: пользователь %lu (действительный %lu),\n" -"группа %lu (действительная %lu)\n" -#: src/misc.c:664 -msgid "Initialized access" -msgstr "Доступ инициализации" +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Использование способа по умолчанию для «%s».\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Создаётся временный пакетный файл %s\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Доступ пользователя" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (временный файл)" -#: src/misc.c:791 -msgid "Make access" -msgstr "Доступ make" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (временный файл)" -#: src/misc.c:825 -msgid "Child access" -msgstr "Доступ потомка" +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (временный файл)" -#: src/output.c:97 +#: 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:280 #, c-format -msgid "write error: stdout" -msgstr "ошибка записи: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Останов.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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[=ТИП]) не настроен в данной сборке." +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "неизвестный тип output-sync «%s»" -#: src/posixos.c:90 +#: src/posixos.c:190 msgid "creating jobs pipe" msgstr "создаётся канал заданий" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "делается копия канала заданий" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "инициализация канала сервера заданий" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:261 +#, 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 "Клиент сервера заданий (fds %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "конвейер сервера заданий" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "запись сервера заданий" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "сервер заданий выключен" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect из канала заданий" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "чтение канала заданий" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "внутренняя ошибка: неправильная строка --jobserver-auth «%s»" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "неизвестный тип output-sync «%s»" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Чтение make-файла «%s»" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (нет цели по умолчанию)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (путь поиска)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (игнорировать ошибки)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (не раскрывать символ `~') " -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Пропуск UTF-8 BOM в буфере make-файла\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "обнаружен способ до первого определения цели" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "перед способом отсутствует правило" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "пропущен разделитель" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "пропущен образец цели" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "несколько образцов цели" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "образец цели не содержит «%%»" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "отсутствует «endif»" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "пустое имя переменной" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "излишний текст после директивы «define»" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "отсутствует «endif», незавершённая «define»" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "излишний текст после директивы «endef»" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "Излишний текст после директивы «%s»" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "излишняя «%s»" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "в условном выражении возможна только одна «else»" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Неправильный формат задания переменной цели" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "в способах не могут задаваться зависимости" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "для групповых целей должен предоставляться способ" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "смешаны неявные правила и правила со статическими образцами" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "смешаны неявные и обычные правила" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "цель «%s» не соответствует образцу целей" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "целевой файл «%s» имеет вхождения и с :, и с ::" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "цель «%s» указана несколько раз в одном правиле" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "предупреждение: переопределение способа для цели «%s»" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "предупреждение: старый способ для цели «%s» игнорируются" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** смешаны неявные и обычные правила: устаревший синтаксис" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "предупреждение: переопределение членства группы для цели «%s»" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Цель «%s» не требует выполнения команд." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "«%s» не требует обновления." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Обрезается файл «%s».\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНет правила для сборки цели «%s»%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Обработка целевого файла «%s».\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Предыдущая попытка обновить файл «%s» завершилась неудачно.\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файл «%s» уже был обработан.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Файл «%s» обновляется в данный момент.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Обновление файла «%s» завершено.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Файл «%s» не существует.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1702,147 +1898,141 @@ 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 -#, c-format -msgid "No implicit rule found for '%s'.\n" -msgstr "Не найдено неявного правила для «%s».\n" +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Зависимость «%s» цели «%s» не существует.\n" -#: src/remake.c:515 +#: src/remake.c:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Использование способа по умолчанию для «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Циклическая зависимость %s <- %s пропущена." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Цели, от которых зависит «%s», в настоящий момент собираются.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Аварийный останов на целевом файле «%s».\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Цель «%s» не была пересобрана из-за ошибок." -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Зависимость «%s» для цели «%s» зависит от порядка.\n" -#: src/remake.c:756 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Зависимость «%s» цели «%s» не существует.\n" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Зависимость «%s» новее, чем цель «%s».\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Зависимость «%s» старее, чем цель «%s».\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Цель «%s» объявлена с двумя двоеточиями и не имеет зависимостей.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Способ для «%s» не задан, и начальные условия не изменены.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Пересборка «%s» из-за установленного флага always-make.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "Нет необходимости пересобирать цель «%s»" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; используется VPATH-имя «%s»" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Необходимо пересобрать цель «%s».\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Игнорируется VPATH-имя «%s».\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "В настоящее время применяется способ «%s».\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Не удалось пересоздать файл цели «%s».\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Целевой файл «%s» успешно пересоздан.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Целевой файл «%s» требует пересоздания с ключом -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Использование команд по умолчанию для «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Предупреждение: время изменения файла «%s» находится в будущем (%s)" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2040,7 @@ msgstr "" "\n" "# Неявные правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1858,7 +2048,7 @@ msgstr "" "\n" "# Неявных правил нет." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1867,11 +2057,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 "" + #: src/signame.c:84 msgid "unknown signal" msgstr "неизвестный сигнал" @@ -2087,44 +2282,44 @@ msgstr "" "# состояние хеш-таблицы:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "автоматическая" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "по умолчанию" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "определена в среде" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "make-файл" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "окружение с -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "определена в командной строке" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "Директива «override»" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (из «%s», строка %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# состояние переменных в хеш-таблице:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2132,7 +2327,7 @@ msgstr "" "\n" "# Переменные\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2140,7 +2335,7 @@ msgstr "" "\n" "# Значения переменных особенные для маски" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2148,7 +2343,7 @@ msgstr "" "\n" "# Нет значений переменных особенных для маски." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2157,7 +2352,7 @@ msgstr "" "\n" "# %u значений переменных особенных для маски" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "предупреждение: неопределённая переменная «%.*s»" @@ -2184,22 +2379,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2207,11 +2402,11 @@ msgstr "" "\n" "# Пути поиска VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Не определён путь поиска «vpath»." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2220,7 +2415,7 @@ msgstr "" "\n" "# %u путей поиска по «vpath»\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2228,7 +2423,7 @@ msgstr "" "\n" "# Не определён общий (переменная «VPATH») путь поиска." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2238,17 +2433,17 @@ 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" -#: 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)" @@ -2256,21 +2451,57 @@ msgstr "" "внутренняя ошибка: не удалось открыть семафор сервера заданий «%s»: (ошибка " "%ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клиент сервера заданий (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "освобождение семафора сервера заданий: (ошибка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "ожидание семафора или процесса-потомка: (ошибка %ld: %s)" +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "неизвестный тип output-sync «%s»" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Некорректное имя функции: %s" + +#~ 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" diff --git a/po/sr.gmo b/po/sr.gmo index 42ba5efa3ccb7333ebb90cd9d1b5188e92bd4433..ed1121da61d525fe88a6cce1dc3f6aa16d68a317 100644 GIT binary patch delta 15822 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, 2016. +# Мирослав Николић , 2016–2022. msgid "" msgstr "" -"Project-Id-Version: make-4.2.1\n" +"Project-Id-Version: make-4.3.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: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-25 10:48+0200\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" -"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: Poedit 2.3\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 "члан архиве додирника није доступан на ВМС-у" -#: 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 +65,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 -#, 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:1107 msgid "" "\n" "# Directories\n" @@ -133,218 +139,248 @@ msgstr "" "\n" "# Директоријуми\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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" +#: src/dir.c:1122 +#, 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:1126 #, 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:1131 #, 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): " +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (кључ „%s“, м-време %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (уређај %ld, и-чвор %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Не" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " датотеке, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "не" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " немогућности" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " за сада." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Нашао сам рецепт за датотеку „%s“ изричитом претрагом правила," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "али се „%s“ сада сматра истом датотеком као „%s“." -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Бришем посредничку датотеку „%s“" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Уклањам посредничке датотеке...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може бити и „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може бити „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ се узајамно искључују" + +#: src/file.c:942 msgid "Current time" msgstr "Тренутно време" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временска ознака је ван опсега; замењујем „%s“" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# Није мета:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Драгоцена датотека (предуслов од „.PRECIOUS“)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Лажна мета (предуслов од „.PHONY“)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Мета линије наредби." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Основно, „MAKEFILES“, или „-include/sinclude makefile“." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Правило изградње" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Претрага по изричитом правилу је обављена." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Претрага по изричитом правилу није обављена." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Изричити/статички корен шаблона: '%s'\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Датотека је прелазни предуслов." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Датотека је предуслов за „.NOTINTERMEDIATE“." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Датотека је секундарна (предуслов за „.SECONDARY“)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Такође твори:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Време измене није никада проверено." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Датотека не постоји." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Датотека је превише стара." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Последња измена „%s“\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Датотека је освежена." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Датотека није освежена." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецепт зависности ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Успешно је освежена." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Треба да се освежи („-q“ је подешено)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Није успела да се освежи." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Неисправна вередност у члану „command_state“!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -352,7 +388,7 @@ msgstr "" "\n" "# Датотеке" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -362,125 +398,143 @@ msgstr "" "# статистика хеш-табеле датотека:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: недостаје назив датотеке" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: превише аргумената" # -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: неисправна радња датотеке: %s" -#: src/function.c:2405 -#, c-format -msgid "insufficient number of arguments (%d) to function '%s'" +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "недовољан број аргумената (%d) за функцију „%s“" -#: src/function.c:2417 +#: src/function.c:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "није примењено на овој платформи: функција „%s“" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "недовршен позив за функцију „%s“: недостаје „%c“" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "Празан назив функције" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Неисправан назив функције: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Назив функције је предуг: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неисправан најмањи број аргумената (%u) за функцију „%s“" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неисправан највећи број аргумената (%u) за функцију „%s“" @@ -556,147 +610,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:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избегавам изричито дубачење правила за правило „%s“.\n" -#: src/implicit.c:490 +#: src/implicit.c:451 #, 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:501 #, 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:506 #, 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:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуслова правила „%s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег изричитог предуслова „%s“.\n" + +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Покушавам са предусловом правила „%s“.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Покушавам изричити предуслов „%s“.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "'%s' ought to exist.\n" +msgstr "„%s“ треба да постоји.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Нађох „%s“.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Користим правило сагласности „%s“ услед „%s“.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Предуслов „%s“ правила „%s“ се не квалификује да треба да постоји.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Нађох предуслов „%s“ као „VPATH“ „%s“\n" -#: src/implicit.c:786 +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Тражим правило са експлицитном датотеком „%s“.\n" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуслова „%s“.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Нисам нашао „%s“.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Нађох изричито правило „%s“ за „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Тражим правило сагласности за „%s“.\n" -#: src/job.c:548 +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Нисам нашао изричито правило за „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Не могу да направим привремену датотеку" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (језгрени избачај)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (занемарено)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<уграђено>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чекам на недовршене послове...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (удаљено)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Почистио сам успели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Почистио сам неуспели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Бришем привремену датотеку групе „%s“\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Нисам успео да обришем привремену датотеку групе „%s“ (%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Уклањам подпроцес „%p“ ПИД %s%s из ланца.\n" -#: src/job.c:1120 +#: src/job.c:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -705,86 +819,85 @@ msgstr "" "\n" "Избројах %d аргумента у неуспелом покретању\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Добијен прстен за подпроцес „%p“ (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: мета „%s“ не постоји" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: освежавам мету „%s“ услед: %s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "мета не постоји" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "не могу да спроведем ограничења оптерећења на овом оперативном систему" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "не могу да спроведем ограничење оптерећења: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" -msgstr "Не могу да повратим стандардни улаз\n" +msgid "Could not restore stdin" +msgstr "Не могу да повратим стандардни улаз" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" -msgstr "Не могу да повратим стандардни излаз\n" +msgid "Could not restore stdout" +msgstr "Не могу да повратим стандардни излаз" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" -msgstr "Не могу да повратим стандардну грешку\n" +msgid "Could not restore stderr" +msgstr "Не могу да повратим стандардну грешку" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: можда је потрошен простор окружења" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Правим привремену датотеку групе „%s“\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -793,7 +906,7 @@ msgstr "" "Садржај датотеке групе:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -802,7 +915,7 @@ msgstr "" "Садржај датотеке групе:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d. ред) Лош контекст шкољке (!unixy && !batch_mode_shell)\n" @@ -812,44 +925,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:317 msgid "Options:\n" msgstr "Опције:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Занемарено зарад сагласности.\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Безусловно одрађује све мете.\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -858,19 +981,19 @@ msgstr "" " Прелази у ДИРЕКТОРИЈУМ пре него што било шта " "уради.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Исписује доста података за уклањање грешака.\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ЗАСТАВИЦЕ] Исписује разне врсте података за уклањање " "грешака.\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -879,14 +1002,13 @@ msgstr "" " Променљиве окружења превазилазе " "мејк_датотеке.\n" -#: src/main.c:350 -#, fuzzy +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -894,15 +1016,15 @@ msgstr "" " -f ДТТКА, --file=ДТТКА, --makefile=ДТТКА\n" " Чита ДАТОТЕКУ као мејк_датотеку.\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Приказује ову помоћ и излази.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -910,7 +1032,7 @@ msgstr "" " -I ДИР, --include-dir=ДИР\n" " Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -918,14 +1040,18 @@ msgstr "" " -j [Бр.], --jobs[=Бр.] Допушта БРОЈ посла одједном; бесконачан број " "послова без аргумената.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=СТИЛ Бира стил сервера посла за коришћење.\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -935,7 +1061,7 @@ msgstr "" " Не започиње више послова осим ако оптерећење " "није испод БРОЈА.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -943,7 +1069,7 @@ msgstr "" " -L, --check-symlink-times Користи последње м-време између симболичких " "веза и мете.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1078,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Не покреће никакав рецепт; само их исписује.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1088,7 @@ msgstr "" " Сматра да је ДАТОТЕКА врло стара и не одрађује " "је.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -970,12 +1096,12 @@ msgstr "" " -O[ВРСТА], --output-sync[=ВРСТА]\n" " Усаглашава излаз паралелних послова ВРСТОМ.\n" -#: src/main.c:380 +#: src/main.c:364 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Исписује унутрашњу базу података мејка.\n" -#: src/main.c:382 +#: src/main.c:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -983,27 +1109,34 @@ msgstr "" " -q, --question Не покреће ниједан рецепт; излазно стање " "говори да ли је освежен.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={СЕЈЕ|насумично|обрнуто|ништа}]\n" +" Обавља мешање предуслова и циљева.\n" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не приказује рецепте.\n" -#: src/main.c:390 -#, fuzzy +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -" -q, --question Не покреће ниједан рецепт; излазно стање " -"говори да ли је освежен.\n" +" --no-silent Одзвања рецептима (искључује режим „--" +"silent“).\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1011,25 +1144,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Искључује „-k“.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Додирује мете уместо да их поново одрађује.\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace Исписује податке о праћењу.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Исписује издање програма и излази.\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Исписује тренутни директоријум.\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1037,7 +1170,7 @@ msgstr "" " --no-print-directory Искључује „-w“, чак и ако је изричито " "укључена.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1045,7 +1178,7 @@ msgstr "" " -W ДТТКА, --what-if=ДТТКА, --new-file=ДТТКА, --assume-new=ДТТКА\n" " Сматра да је ДАТОТЕКА бесконачно нова.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1053,27 +1186,60 @@ msgstr "" " --warn-undefined-variables Упозорава када се упућује на неодређену " "променљиву.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "грешка писања: стандардни излаз" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "празна ниска је неисправна као назив датотеке" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "непозната одредба нивоа прочишћавања „%s“" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "непозната врста усклађивања излаза „%s“" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [опције] [мета] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“ (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Грешке пријавите на \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1088,28 +1254,32 @@ msgstr "" "Заставице изузетка = %lx\n" "Адреса изузетка = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Повреда приступа: радња писања на адреси 0x%p\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "Функција „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1009 +#: src/main.c:1098 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "Претрага путање „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1609 +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "поништавам везу (привремена датотека): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1117,164 +1287,156 @@ msgstr "" "упозорење: послужитељ посла није доступан: користим „-j1“. Додајте + да " "родитељ одреди правило." -#: src/main.c:1617 -#, fuzzy, c-format +#: src/main.c:1841 +#, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"упозорење: „-jN“ је присиљено у субмејку: искључујем режим послужитеља посла." +"упозорење: „-j%d“ је присиљено у субмејку: поново подешава режим послужитеља " +"посла." -#: src/main.c:1781 +#: src/main.c:1930 #, 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:1825 -msgid "fwrite (temporary file)" -msgstr "запиши датотеку (привремена датотека)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" -#: src/main.c:2004 -#, fuzzy, c-format +#: src/main.c:2095 +#, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"упозорење: „-jN“ је присиљено у субмејку: искључујем режим послужитеља посла." +"упозорење: „-j%d“ је присиљено у „makefile“: поново подешава режим " +"послужитеља посла." -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралелни послови (-j) нису подржани на овој платформи." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Враћам на режим једног посла (-j1) mode." -#: src/main.c:2109 +#: src/main.c:2248 +#, fuzzy, c-format +msgid "Using jobserver controller %s\n" +msgstr "Непознат стил усклађивања сервера посла „%s“" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "неисправно узајамно искључивање усклађивања излаза: %s" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Симболичке везе нису подржане: искључујем „-L“." -#: src/main.c:2190 +#: src/main.c:2327 +#, fuzzy, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "неисправан режим мешања: %s: „%s“" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Освежавам мејк_датотеке...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Мејк_датотека „%s“ се можда понавља; неђу је поново одрадити.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: нисам успео да учитам" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Нисам успео поново да одрадим мејк_датотеку „%s“." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Нисам нашао укључену мејк_датотеку „%s“." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Нисам нашао мејк_датотеку „%s“" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, c-format msgid "Re-executing[%u]:" msgstr "Поново-извршавам[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "поништавам везу (привремена датотека): " - -#: src/main.c:2555 +#: src/main.c:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "„.DEFAULT_GOAL“ садржи више од једне мете" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Нема мета" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Нису наведене мете и нисам нашао мејк_датотеку" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Освежавам циљне мете...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "Опција „%s%s“ захтева аргумент не-празне ниске" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "Опција „-%c“ захтева аргумент позитивног целог броја" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградња за „%s“\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградња за „%s“(%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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 +1446,7 @@ msgstr "" "%sОво је слободан софтвер: можете слободно да га мењате и расподељујете.\n" "%sНема НИКАКВЕ ГАРАНЦИЈЕ, у скалду са законом.\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1293,7 +1455,7 @@ msgstr "" "\n" "# База података мејка, штампана %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1302,380 +1464,411 @@ msgstr "" "\n" "# База података мејка је завршена %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Користим основни рецепт за „%s“.\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Приступ корисника" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Приступ мејка" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "поништавам везу (привремена датотека): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Приступ подпроцеса" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen: привремена датотека „%s“: %s" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "грешка писања: стандардни излаз" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"упозорење: Не могу да прибавим катанац излаза, искључујем усклађивање излаза." -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Стајем.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Не могу да отворим сервер посла „%s“: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "стварам спојку посла" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "удвостручавам спојку послова" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "почетна спојка послужитеља посла" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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 "Клијент послужитеља посла (описници датотека %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "спојни ред послужитеља посла" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "пишем послужитеља посла" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" -msgstr "" +msgstr "послужитељ посла је угашен" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "п-бира спојку послова" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "читам спојку посла" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неисправна „--sync-mutex“ ниска „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не могу да отворим узајамно искључивање усклађивања излаза „%s“: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Читам мејк_датотеке...\n" -#: src/read.c:336 +#: src/read.c:330 #, c-format msgid "Reading makefile '%s'" msgstr "Читам мејк_датотеку „%s“" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (нема основног циља)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (претражујем путању)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (не марим)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (нема ~ проширења)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Прескачем УТФ-8 БОМ у мејк_датотеци „%s“\n" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Прескачем УТФ-8 БОМ у међумеморији мејк_датотеке\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "рецепт долази пре прве мете" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "недостаје правило пре рецепта" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "недостаје раздвојник" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "недостаје шаблон мете" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "више шаблона мете" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "шаблон мете не садржи „%%“" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "недостаје „endif“" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "празан назив променљиве" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "сувишан текст након директиве „define“" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "недостаје „endef“, неокончано „define“" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "сувишан текст након директиве „endef“" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "сувишан текст након директиве „%s“" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "сувишно „%s“" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "само једно „else“ по услову" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Лоша одредница променљиве специфичне мети" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "„.WAIT“ не треба да има предуслове" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "„.WAIT“ не треба да има наредбе" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "предуслови се не могу одредити у рецептима" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" -msgstr "" +msgstr "груписане мете морају обезбедити рецепт" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "помешана правила изричитог и статичког шаблона" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "помешана изричита и обична правила" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "мета „%s“ не одговара шаблону мете" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "датотека мете „%s“ има и : и :: уносе" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "мета „%s“ је дата више од једном у истом правилу" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "упозорење: преписујем рецепт за мету „%s“" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "упозорење: занемарујем стари рецепт за мету „%s“" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** помешана изричита и обична правила: застарела синтакса" -#: src/read.c:2271 -#, fuzzy, c-format +#: src/read.c:2325 +#, c-format msgid "warning: overriding group membership for target '%s'" -msgstr "упозорење: преписујем рецепт за мету „%s“" +msgstr "упозорење: преписујем чланство групе за мету „%s“" -#: src/read.c:2636 +#: src/read.c:2683 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "упозорење: видех НИШТАВАН знак; остатак реда је занемарен" -#: 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ништа неће бити урађено за „%s“." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "„%s“ је освежено." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Чистим датотеку „%s“.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНема правила за одрађивање мете „%s“%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Разматрам датотеку мете „%s“.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Недавно сам покушао и нисам успео да освежим датотеку „%s“.\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Датотека „%s“ је већ разматрана.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Још увек освежавам датотеку „%s“.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Завршио сам освежавање датотеке „%s“.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Датотека „%s“ не постоји.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1683,147 +1876,141 @@ msgstr "" "*** Упозорење: „.LOW_RESOLUTION_TIME“ датотека „%s“ има високу резолуцију " "временске ознаке" -#: src/remake.c:507 src/remake.c:1039 +#: src/remake.c:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Користим основни рецепт за „%s“.\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Кружна „%s <— %s“ зависност је одбачена." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Завршио сам предуслове датотеке мете „%s“.\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Преудслови од „%s“ су одрађени.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Одустајем над датотеком мете „%s“.\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Мета „%s“ није поново одрађена због грешака." -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Предуслов „%s“ је само по поретку за мету „%s“.\n" -#: src/remake.c:756 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Преудслов „%s“ мете „%s“ не постоји.\n" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Предуслов „%s“ је новији од мете „%s“.\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Предуслов „%s“ је старији од мете „%s“.\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Мета „%s“ је двострука двотачка и нема предуслове.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Нема рецепта за „%s“ и никакви предуслови заправо нису мењани.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Одрађујем „%s“ због заставице увек-одради.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "Нема потребе за поновнм одрађивањем мете „%s“" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; користим „VPATH“ назив „%s“" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Морам поново да одрадим мету „%s“.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Занемарујем „VPATH“ назив „%s“.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Рецепт од „%s“ је покренут.\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Нисам успео поново да одрадим датотеку мете „%s“.\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Успешно сам одрадио датотеку мете „%s“.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Датотека мете „%s“ треба поново да се одради под „-q“.\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Користим основне наредбе за „%s“.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Упозорење: Датотека „%s“ има време измене %s сек. у будућности" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2018,7 @@ msgstr "" "\n" "# Изричита правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1839,20 +2026,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 +2222,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 +2259,44 @@ msgstr "" "# статистика хеш-табеле:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "аутоматски" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "основно" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "окружење" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "мејк_датотека" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "окружење под „-e“" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "линија наредби" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "директива „override“" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (од „%s“, %lu. ред)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# променљива подешава статистику хеш табеле:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2112,7 +2304,7 @@ msgstr "" "\n" "# Променљиве\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2120,7 +2312,7 @@ msgstr "" "\n" "# Вредности променљиве према шаблону" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2128,7 +2320,7 @@ msgstr "" "\n" "# Нема вредности променљиве према шаблону." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2137,7 +2329,7 @@ msgstr "" "\n" "# %u вредности променљиве према шаблону" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "упозорење: неодређена променљива „%.*s“" @@ -2162,22 +2354,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2185,11 +2377,11 @@ msgstr "" "\n" "# „VPATH“ путање претраге\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Нема „vpath“ путања претраге." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2198,7 +2390,7 @@ msgstr "" "\n" "# %u „vpath“ путање претраге.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2206,7 +2398,7 @@ msgstr "" "\n" "# Нема опште (променљиве „VPATH“) путање претраге." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2216,17 +2408,17 @@ 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" -#: 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)" @@ -2234,21 +2426,64 @@ msgstr "" "унутрашња грешка: не могу да отворим семафор послужитеља посла „%s“: (грешка " "%ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клијент послужитеља посла (семафор „%s“)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "отпуштам семафор послужитеља посла: (грешка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "семафор или процес подпроцеса чека: (грешка %ld: %s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не могу да обрадим узајамно искључивање усклађивања излаза „%s“: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неисправно узајамно искључивање усклађивања излаза: %s" + +#~ 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 c85b0685b49f848b0d167c847c7a935c50a2e973..4c29a091802e25d5447f6b38ca8cb9d2d44d12f0 100644 GIT binary patch delta 14841 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 diff --git a/po/sv.po b/po/sv.po index a08eb49..04e7d76 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 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. # -# $Id: make.po,v 1.27 2020-01-06 16:22:49+01 göran Exp $ +# $Id: make.po,v 1.34 2022-10-25 08:53:05+02 göran Exp $ 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-06 16:19+0100\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 08:52+0200\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:1107 msgid "" "\n" "# Directories\n" @@ -136,221 +141,252 @@ msgstr "" "\n" "# Kataloger\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nyckel %s, mtid %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Inga" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " filer, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "inga" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " omöjligheter" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " hittills." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Tar bort mellanfilen ”%s”" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Tar bort mellanfiler …\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan inte vara både .NOTINTERMEDIATE och .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan inte vara både .NOTINTERMEDIATE och .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE och .SECONDARY är ömsesidigt uteslutande" + +#: src/file.c:942 msgid "Current time" msgstr "Nuvarande tid" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Inte ett mål:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Låtsasmål (nödvändig för .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Kommandoradsmål." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Inbyggd regel" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Implicit regelsökning har genomförts." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Implicit regelsökning har inte genomförts." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mönsterstam: ”%s”\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Filen är ett övergående beroende." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen är en förutsättning för .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen är sekundär (förutsättning för .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Skapar också:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Ändringstiden har inte kontrollerats." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Filen finns inte." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Filen är mycket gammal." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Senast ändrad %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Filen har uppdaterats." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Filen har inte uppdaterats." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Uppdateringen lyckades." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Behöver uppdateras (-q har angivits)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Uppdateringen misslyckades." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Ogiltigt värde i medlemmen ”command_state”!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -358,7 +394,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -368,124 +404,142 @@ msgstr "" "# statistik för filhashtabell:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:799 +#: 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: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:1533 +#: 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: filnamn saknas" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "öppna: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "stäng: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: för många argument" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "läs: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: felaktig filåtgärd: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ej implementerat på denna plattform: funktionen ”%s”" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "oavslutat funktionsanrop ”%s”: ”%c” saknas" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnamn" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Felaktigt funktionsnamn: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnamnet är för långt: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Felaktigt största antal argument (%u) till funktionen ”%s”" @@ -575,133 +629,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:326 #, 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:490 +#: src/implicit.c:451 #, c-format -msgid "Trying pattern rule with stem '%.*s'.\n" -msgstr "Prövar mönsterregel med stammen ”%.*s”.\n" +msgid "Trying harder.\n" +msgstr "Försöker hårdare.\n" -#: src/implicit.c:717 +#: src/implicit.c:501 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" -msgstr "Avvisar den omöjliga regelförutsättningen ”%s”.\n" +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prövar mönsterregeln ”%s” med stammen ”%.*s”.\n" -#: src/implicit.c:718 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible implicit prerequisite '%s'.\n" -msgstr "Avvisar den omöjliga implicita förutsättningen ”%s”.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stammen är för lång: ”%s%.*s”.\n" -#: src/implicit.c:732 +#: src/implicit.c:768 +#, c-format +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:770 +#, c-format +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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prövar det regelförutsättningen ”%s”.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, 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:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "”%s” borde finnas.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Hittade ”%s”.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Använder kompatibilitetsregeln ”%s” på grund av ”%s”.\n" + +#: src/implicit.c:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”.\n" + +#: src/implicit.c:885 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”\n" +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Letar efter en regel med den explicita filen ”%s”.\n" -#: src/implicit.c:786 +#: src/implicit.c:886 #, 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:927 +#, 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:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "”%s” finns inte.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Hittade en implicit regel ”%s” för ”%s”.\n" + +#: src/implicit.c:1151 +#, 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:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Hittade ingen implicit regel för ”%s”.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan inte skapa en temporärfil" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (minnesdump)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ignoreras)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Inväntar oavslutade jobb..." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (fjärr)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -710,86 +828,85 @@ msgstr "" "\n" "Räknade till %d argument vid misslyckad start\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Erhöll symbol för barnprocessen %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: målet ”%s” finns inte" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +msgid "target does not exist" +msgstr "målet finns inte" + +#: src/job.c:2104 #, 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:2106 msgid "cannot enforce load limit: " msgstr "kan inte upprätthålla lastbegränsning: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljöutrymmet kanske är slut" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Skapar tillfällig satsfil %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -798,7 +915,7 @@ msgstr "" "Satsfilinnehåll:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -807,7 +924,7 @@ msgstr "" "Satsfilinnehåll:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +934,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 "Unloading shared object %s\n" +msgstr "Laddar ur det delade objektet %s\n" + +#: 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." +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen ”load” stödjs inte på denna plattform" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Flaggor:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -862,19 +989,19 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Byt katalog till KATALOG innan något görs.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Skriv ut massor av felsökningsinformation.\n" -#: src/main.c:345 +#: src/main.c:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -882,12 +1009,12 @@ msgstr "" " -e, --environment-overrides\n" " Miljövariabler åsidosätter makefiler.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -895,15 +1022,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Använd FIL som makefil.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -911,7 +1038,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Genomsök KATALOG efter inkluderade makefiler.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -919,13 +1046,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:346 +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:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -935,7 +1066,7 @@ msgstr "" " Påbörja fler jobb endast om lasten understiger " "N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -943,7 +1074,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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -952,7 +1083,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:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -962,7 +1093,7 @@ msgstr "" " Betrakta FIL som mycket gammal och återskapa " "den inte.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -971,11 +1102,11 @@ msgstr "" " Synkronisera utmatningen av parallella jobb\n" " enligt TYP.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -983,27 +1114,35 @@ msgstr "" " -q, --question Kör inga recept; slutstatus visar om det är " "aktuellt.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Återge inte recept.\n" -#: src/main.c:390 +#: src/main.c:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1011,26 +1150,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Stäng av -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 msgid " --trace Print tracing information.\n" msgstr " --trace Skriv spårningsinformation.\n" -#: src/main.c:399 +#: src/main.c:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1038,7 +1177,7 @@ msgstr "" " --no-print-directory Stäng av -w, även om det är implicit " "påslaget.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1046,7 +1185,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1054,27 +1193,62 @@ msgstr "" " --warn-undefined-variables Varna vid användning av en odefinierad " "variabel.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "skrivfel: standard ut" + +#: src/main.c:742 #, 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:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "okänd felsökningsnivå ”%s” angiven" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "okänd typ av utmatningssynkronisering ”%s”" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Användning: %s [flaggor] [mål] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Detta program byggdes för %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Detta program byggdes för %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Anmäl fel till .\n" +"Skicka synpunkter på översättningen till .\n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1089,27 +1263,31 @@ msgstr "" "Undantagsflaggor = %lx\n" "Undantagsadress = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "avlänka (temporärfil): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1117,173 +1295,161 @@ msgstr "" "varning: jobbserver otillgänglig: använder -j1. Lägg till ”+” i " "föräldraregeln." -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 #, c-format -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)" +msgid "Makefile from standard input specified twice" +msgstr "Makefil från standard in angavs dubbelt" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporärfil)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporärfilen %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Återställer till enkeljobbsläge (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Okänd styrning för jobbservern %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Använder mutex för utmatningssynkronisering %s\n" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Aktivera blandningsläge: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Uppdaterar makefiler...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: misslyckades att ladda" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Misslyckades med att återskapa makefilen ”%s”." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Den inkluderade makefilen ”%s” fanns inte." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen ”%s” fanns inte" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Inga mål" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Uppdaterar slutmål...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sByggt för %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sByggt för %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1292,7 +1458,7 @@ msgstr "" "\n" "# Make-databas, utskriven %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1301,527 +1467,552 @@ msgstr "" "\n" "# Färdigställde Make-databas %s\n" -#: src/misc.c:643 +#: src/misc.c:602 #, 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:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s värde %s: inte en katalog" -#: src/misc.c:743 -msgid "User access" -msgstr "Användaråtkomst" +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "använder standardtemporärkatalogen ”%s”" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make-åtkomst" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "skapa temporärfilen %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Barnåtkomst" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "avlänka temporärfilen %s: %s" -#: src/output.c:97 +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: temporärfilen %s: %s" + +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "skrivfel: standard ut" +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:475 msgid ". Stop.\n" msgstr ". Stannar.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Det går inte att öppna jobbservern %s: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "skapar jobbrör" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "duplicerar jobbrör" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "iordningställer rör till jobbserver" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" msgstr "skriver till jobbserver" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "jobbservern stängdes ner" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect jobbrör" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "läser från jobbledning" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "felaktig sträng --jobserver-auth ”%s”" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan inte öppna mutex för utmatningssynkronisering %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Läser makefilen ”%s”" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (inget standardmål)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (sökväg)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (oviktigt)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (ingen ~-expansion)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "recept inleds före första målet" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "regel saknas före recept" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "separator saknas" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "målmönster saknas" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "flera målmönster" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "målmönstret innehåller inget ”%%”" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "”endif” saknas" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "tomt variabelnamn" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "överflödig text efter direktivet ”define”" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "”endef” saknas, oavslutad ”define”" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "överflödig text efter direktivet ”endef”" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "överflödig text efter direktivet ”%s”" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "överflödigt ”%s”" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "endast ett ”else” per villkor" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Felformad målberoende variabeldefinition" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT skall inte ha några förutsättningar" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT skall inte ha kommandon" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "beroenden kan inte definieras i recept" -#: src/read.c:1986 +#: src/read.c:2057 #, 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:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "blandade implicita regler och statiska mönsterregler" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "blandade implicita regler och normala regler" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "”%s” är aktuell." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Beskär filen ”%s”.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Överväger målfilen ”%s”.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Filen ”%s” har redan övervägts.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Uppdaterar fortfarande filen ”%s”.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Slutförde uppdaterandet av filen ”%s”.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Filen ”%s” finns inte.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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 +#: src/remake.c:538 #, 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 -#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Det cirkulära beroendet %s <- %s släpptes." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, c-format msgid "No need to remake target '%s'" msgstr "Inget behov att återskapa målet ”%s”" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; använder VPATH-namnet ”%s”" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Måste återskapa målet ”%s”.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Bortser från VPATH-namnet ”%s”.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Återskapade målfilen ”%s”.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, 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:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Använder standardkommandon för ”%s”.\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, 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:1747 #, 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 +2020,7 @@ msgstr "" "\n" "# Implicita regler" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1837,7 +2028,7 @@ msgstr "" "\n" "# Inga implicita regler." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1846,11 +2037,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 +2260,44 @@ msgstr "" "# statistik för hashtabell:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "automatisk" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "normal" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "miljö" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefil" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "miljö enligt -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "kommandorad" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "”override”-direktiv" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (från ”%s”, rad %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# statistik för variabelmängd-hashtabell:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2109,7 +2305,7 @@ msgstr "" "\n" "# Variabler\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2117,7 +2313,7 @@ msgstr "" "\n" "# Mönsterspecifika variabelvärden" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2125,7 +2321,7 @@ msgstr "" "\n" "# Inga mönsterspecifika variabelvärden." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2134,7 +2330,7 @@ msgstr "" "\n" "# %u mönsterspecifika variabelvärden" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "varning: odefinierad variabel ”%.*s”" @@ -2159,22 +2355,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2182,11 +2378,11 @@ msgstr "" "\n" "# VPATH-sökvägar\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Inga ”vpath”-sökvägar." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2195,7 +2391,7 @@ msgstr "" "\n" "# %u ”vpath”-sökvägar.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2203,7 +2399,7 @@ msgstr "" "\n" "# Ingen allmän sökväg (enligt ”VPATH”-variabeln)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2213,33 +2409,43 @@ 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" -#: 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)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobbserverklient (semafor %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, 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:381 #, 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:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan inte tolka mutex för utmatningssynkronisering %s: %s" + +#: src/w32/w32os.c:452 +#, 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 b795bb1e91606449b7c58c8a1f0ead1171bf5d91..7e8cf06e27aaac8c690340947a6f981c670978be 100644 GIT binary patch delta 4091 zcmYk;4OG?j9mnzS1x$S4O7f%#cojhqod%YXgbbfhR8TZ)&L;wgLRokjJpk7XU7DtL zjk1PG=+x}d>pa=9t+KVU%;V{3?s(i&Zf)(f$J#n;%e_DRe=Prp?|uFLzx%(xhwtzA z`|HtNzMpRPg?>3W<}u?sMx+t%_c8klTL$pKRX4~i8&@NLwu6sY+>0ad5MGP#VE`{- z5`K-NF)`jO6N@kzS701AW4c+$Hc}W#MK=z^w=saf#W@&F>y=oEbFm9c@GrO)Ck*!7 zi+V0T!E6Su#MyWd*W*915QB+kQ}G2{MgR793d^aujbTs5<5+=Tpc8lwxK`8 ztQfbU8hRhqVf+xYS-2S0P8asWOQ;Ecf&;PtP};y0jH7?crjUvgkx5tuGC8Y8H4sGo zpbeG!ZAfyg1GDget3QpCxId42-cO_SY3axq?FQs4n}?*{>M)c;VG{+CU@xN9`YjxT ze{%K7tc%t#&sl-F+^@rN*oo@sJsgFXu@L*Qp)znP7GO2gg;a!7ysMO`7o?C=@*o>M zNy|*!hU(xPHemL6@0A*-1jZ; zHeCraSSv@(ycs9rX4D?}3G&Xev#6!{GbUgx55-}ca|{mT{zgu)y{FQ;Jhj9qvOWZLc7cvp*p3FiYhuYcCZdNw7M1zZ?0p z&^vr;Me;d>U#1L1e#JCo0A7pf=$}T!7KE(hqMz&1eNGLpxEKd>Rw+Fs9<` zsFYuHeug@xS1?ZJKYg-y{_{`+S&mG~wxb_^j_T+3m?coUS%Wx>J!B9Gdb_zj!2FZ%0Oz|3AfEw`%?2D^Wsl6Nf<0jNz z*onh%KMuz?Fdu(|@t9cR?WHW#UMNF7x3+}*Yi+hup|$VA3_RuhBWf?ie%l*)0ct>t zPz@|YEma$8sg9vC_A}IyTtHr)_B+(T2b6jl44|GHT^jPfxQPnw)(X^!gQ%HpM5TT= zYDRCMQujG(Dg3-m$hIY63Ra;8T#pp)HLG-`=|h2!u`RHm~-)4Vs@N=%~S5c;t9 zI!xhV;wge7Z8e0JB9Bl5oTi=^*b{gQF^|xt&ejmO>xSzQLdWzVQA>~z+ed`D`Or0+ z&}MmtSWFBc<`dfK4-o}K2a!f}5xSH@rJZf_|7$CyR6^Ohi&#zEL&Olh7fJ8gut$}| z?{O0y9x*5(w3O1*#1vvTL5{46(28GuDS;bYMJ0|RZX;&7x?VO@c%IOL>DohRSJV+v zL<7-DEGPDp3VWPFCh;=SpU}$oUiVX2=WbfDnkXTjCA88rh%v;Y!~{aSXc?hPhgI9~ zIpR7(XF!+E%nyhqy3wnsw5Q;GY=k?AiLOp3`X%CsyN@{U#P7Ru8)~~g=>z$jR1v*bS#JUBT{#I?5cj(KU8n;$nfQ^b zdlGMT3K z@lW|d_&4>*WFQTRVPn0)}A~NsA+2Cuc@J? ZDUw>+5*;}_y~Y6Fv delta 5478 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 diff --git a/po/tr.po b/po/tr.po index 648b59b..78454e9 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: 2022-10-31 02:23-0400\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:1107 msgid "" "\n" "# Directories\n" @@ -133,230 +138,260 @@ msgstr "" "\n" "# Dizin\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, 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:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Hayır" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " dosyaları," -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "hayır" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr "olanaksızlıklar" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " çok uzak." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Aracı dosya `%s' siliniyor" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Aracı dosyalar siliniyor...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Şu an" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Bir hedef değil:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." -#: src/file.c:1025 +#: src/file.c:1098 #, fuzzy msgid "# Command line target." msgstr "# Komut-satırı hedefi." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Örtük kural yok." -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Örtük kural araştırması yapılmıştı." -#: src/file.c:1032 +#: src/file.c:1105 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:1107 #, 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:1109 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:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Oluştursa da:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Değişiklik zamanı hiç kontrol edilmedi." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Dosya yok." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Dosya çok eski." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Son değişiklik tarihi %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Dosya güncelleştirilmişti." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Dosya güncelleştirilmemişti." -#: src/file.c:1062 +#: src/file.c:1139 #, 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:1142 #, 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:1151 msgid "# Successfully updated." msgstr "# Tamamen güncellendi." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Güncellenmiş olması gerekir (-q verildi)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Güncellenmiş olamadı." -#: src/file.c:1086 +#: src/file.c:1163 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# `command_state' üyesinde geçersiz değer!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -364,7 +399,7 @@ msgstr "" "\n" "# Dosyalar" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -374,127 +409,147 @@ msgstr "" "# dosyaların hash tablosu durumları:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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 "invalid second argument to 'wordlist' function" +msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman" + +#: src/function.c:1328 #, fuzzy -msgid "non-numeric second argument to 'wordlist' function" +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: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) 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, fuzzy, c-format msgid "write: %s: %s" msgstr "yazma hatası: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2277 +#: src/function.c:2397 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: geçersiz seçenek -- %c\n" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" @@ -584,135 +639,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:326 +#, 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:451 #, c-format -msgid "Stem too long: '%s%.*s'.\n" +msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:490 +#: src/implicit.c:501 #, 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:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 #, 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:770 #, 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:787 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' deneniyor.\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Örtük önceden gereklilik `%s' deneniyor.\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "`%s' dosyası yok.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 #, 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 "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" + +#: src/implicit.c:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "`%s' için bir örtük kural bulundu.\n" + +#: src/implicit.c:1151 +#, 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:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "Bir geçici dosya oluşturulamıyor\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (bellek kopyası - core dosyası - diske yazıldı)" -#: src/job.c:553 +#: src/job.c:557 #, fuzzy msgid " (ignored)" msgstr "[%s] Hata %d (yoksayıldı)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 #, fuzzy msgid "" msgstr " (paket içinde):" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Bitmemiş işler için bekliyor...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (karşıdan)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -721,102 +837,102 @@ msgstr "" "\n" "Sayılan %d argüman ile başarısız oldu\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, 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 -#, fuzzy, c-format -msgid "%s: target '%s' does not exist" -msgstr "Dokunulup geçildi: Arşiv `%s' yok" - -#: src/job.c:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Dosya yok." + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 #, 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:2236 +#, 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:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "Standart çıktı eski haline getirilemedi\n" -#: src/job.c:2257 +#: src/job.c:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ortam alanı tükenmiş olabilir" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +942,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:317 msgid "Options:\n" msgstr "Seçenekler:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Uyumluluk için yoksayıldı.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 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:325 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:327 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:329 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:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -900,16 +1026,16 @@ msgstr "" " -f DOSYA, --file=DOSYA, --makefile=DOSYA\n" " DOSYAyı bir makefile olarak okur.\n" -#: src/main.c:355 +#: src/main.c:337 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:339 #, 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -917,7 +1043,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:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -925,13 +1051,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -941,7 +1071,7 @@ msgstr "" " Yük N'den az olmadıkça çoklu işler " "başlatılmaz.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -949,7 +1079,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:355 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -959,7 +1089,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:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -969,17 +1099,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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:380 +#: src/main.c:364 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:366 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " @@ -987,53 +1117,59 @@ msgid "" msgstr "" " -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 #, 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:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:392 +#: src/main.c:379 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:382 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:384 #, 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:386 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:388 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:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1041,7 +1177,7 @@ msgstr "" " --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi " "kapatır\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1049,7 +1185,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:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1057,27 +1193,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:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "yazma hatası: %s" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "dosyaismi olarak boş dizge geçersiz" -#: src/main.c:754 +#: src/main.c:834 #, 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:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Yazılım hatalarını adresine,\n" +"çeviri hatalarını adresine bildiriniz.\n" + +#: src/main.c:940 #, 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:947 #, fuzzy, c-format msgid "" "\n" @@ -1092,28 +1263,32 @@ msgstr "" "OlağandışılıkBayrakları = %lx\n" "OlağandışılıkAdresi = %lx\n" -#: src/main.c:864 +#: src/main.c:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (geçici dosya): " + +#: src/main.c:1833 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1121,172 +1296,160 @@ msgstr "" "uyarı: iş sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' " "ekle." -#: src/main.c:1617 +#: src/main.c:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (geçici dosya)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Sembolik bağlar desteklenmiyor: -L iptal ediliyor" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "makefile'ları güncelliyor...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "`%s' make dosyası yeniden derlenemiyor." -#: src/main.c:2323 +#: src/main.c:2548 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "İçerilen make dosyası `%s' bulunamadı." -#: src/main.c:2328 +#: src/main.c:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Hedef yok" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Hedefler belirtilmediğinden make dosyası yok" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Amaçlanan hedefler güncelleniyor...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sBu program %s için derlenmiş\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1295,7 +1458,7 @@ msgstr "" "\n" "# Make veri tabanı, %s üzerine basıldı" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1304,385 +1467,414 @@ msgstr "" "\n" "# %s üzerindeki Make veri tabanı tamamlandı\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, 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:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "%s geçici komut-liste dosyasını oluşturuyor\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make erişimi" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (geçici dosya): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Asta erişim" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Durdu.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "işleri yaratıyor" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 #, fuzzy msgid "duping jobs pipe" msgstr "işleri yaratıyor" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "işleri hazırlıyor" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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:363 msgid "write jobserver" msgstr "iş-sunucusu yazıyor" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "" -#: src/posixos.c:303 +#: src/posixos.c:486 #, fuzzy msgid "pselect jobs pipe" msgstr "görev listesi okunuyor" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "görev listesi okunuyor" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, 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:330 #, fuzzy, c-format msgid "Reading makefile '%s'" msgstr "`%s' make dosyası okunuyor" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (öntanımlı amaç yok)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (arama yolu)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (umurunda değil)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr "( ~ uzantısı yok)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, fuzzy, c-format msgid "recipe commences before first target" msgstr "komutlar ilk hedeften önce başlıyor" -#: src/read.c:1035 +#: src/read.c:1053 #, fuzzy, c-format msgid "missing rule before recipe" msgstr "komutlardan önceki kural kayıp" -#: src/read.c:1136 +#: src/read.c:1154 #, 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 #, fuzzy, c-format msgid "missing separator" msgstr "kayıp ayraç%s" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "hedef kalıp kayıp" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "çok sayıda hedef kalıp" -#: src/read.c:1289 +#: src/read.c:1306 #, fuzzy, c-format msgid "target pattern contains no '%%'" msgstr "hedef kalıp `%%' içermiyor" -#: src/read.c:1404 +#: src/read.c:1349 #, 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:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "boş değişken ismi" -#: src/read.c:1478 +#: src/read.c:1423 #, fuzzy, c-format msgid "extraneous text after 'define' directive" msgstr "`endef' yönergesinden sonraki metin yersiz" -#: src/read.c:1503 +#: src/read.c:1448 #, fuzzy, c-format msgid "missing 'endef', unterminated 'define'" msgstr "`endef' kayıp, `define' sonlandırılmamış" -#: src/read.c:1531 +#: src/read.c:1476 #, fuzzy, c-format msgid "extraneous text after 'endef' directive" msgstr "`endef' yönergesinden sonraki metin yersiz" -#: src/read.c:1603 +#: src/read.c:1548 #, fuzzy, c-format msgid "extraneous text after '%s' directive" msgstr "`%s' yönergesinden sonraki metin yersiz" -#: src/read.c:1604 +#: src/read.c:1549 #, fuzzy, c-format msgid "extraneous '%s'" msgstr "`%s' yersiz" -#: src/read.c:1632 +#: src/read.c:1577 #, fuzzy, c-format msgid "only one 'else' per conditional" msgstr "her şartlı ifade de sadece bir `else'" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Hedefe özgü değişken tanımı bozuk" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, fuzzy, c-format msgid "prerequisites cannot be defined in recipes" msgstr "öngereksinimler komut betiklerinde tanımlanamaz" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "" -#: src/read.c:2029 +#: src/read.c:2100 #, 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:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "örtük ve normal kurallar karışmış" -#: src/read.c:2107 +#: src/read.c:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, fuzzy, c-format msgid "'%s' is up to date." msgstr "`%s' güncel" -#: src/remake.c:323 +#: src/remake.c:350 #, fuzzy, c-format msgid "Pruning file '%s'.\n" msgstr "Budanmış dosya `%s'.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, 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:459 #, 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:471 #, 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:481 #, fuzzy, c-format msgid "Still updating file '%s'.\n" msgstr "`%s' dosyası hala güncelleniyor.\n" -#: src/remake.c:457 +#: src/remake.c:484 #, 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:513 #, fuzzy, c-format msgid "File '%s' does not exist.\n" msgstr "`%s' dosyası yok.\n" -#: src/remake.c:494 +#: src/remake.c:520 #, fuzzy, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1690,147 +1882,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 -#, 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 +#: src/remake.c:538 #, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, fuzzy, c-format msgid "; using VPATH name '%s'" msgstr "; VPATH ismi `%s' kullanılıyor" -#: src/remake.c:824 +#: src/remake.c:891 #, fuzzy, c-format msgid "Must remake target '%s'.\n" msgstr "Hedef `%s' yeniden derlenmeli.\n" -#: src/remake.c:830 +#: src/remake.c:897 #, fuzzy, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " VPATH ismi `%s' yoksayılıyor.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2024,7 @@ msgstr "" "\n" "# Örtük Kurallar" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1846,7 +2032,7 @@ msgstr "" "\n" "# Örtük kural yok." -#: src/rule.c:548 +#: src/rule.c:610 #, fuzzy, c-format msgid "" "\n" @@ -1855,11 +2041,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 +2256,45 @@ msgstr "" "# dosyaların hash tablosu durumları:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "otomatik" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "öntanımlı" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "çevre" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "derleme dosyası" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "çevre -e altında" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "komut satırı" -#: src/variable.c:1671 +#: src/variable.c:1804 #, fuzzy msgid "'override' directive" msgstr "`override' yönergesi" -#: src/variable.c:1682 +#: src/variable.c:1814 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (`%s'den, satır %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# değişken kümesi hash tablosunun durumu:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2111,7 +2302,7 @@ msgstr "" "\n" "# Değişkenler\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2119,7 +2310,7 @@ msgstr "" "\n" "# Kalıba özgü Değişken Değerleri" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2127,7 +2318,7 @@ msgstr "" "\n" "# Örneğe duyarlı değişken değeri yok." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2136,7 +2327,7 @@ msgstr "" "\n" "# %u örneğe duyarlı değişken değeri" -#: src/variable.h:229 +#: src/variable.h:237 #, fuzzy, c-format msgid "warning: undefined variable '%.*s'" msgstr "uyarı: `%.*s' değişkeni atanmamış" @@ -2163,22 +2354,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2186,12 +2377,12 @@ msgstr "" "\n" "# VPATH Arama yolu\n" -#: src/vpath.c:620 +#: src/vpath.c:617 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# `vpath' arama yolları yok" -#: src/vpath.c:622 +#: src/vpath.c:619 #, fuzzy, c-format msgid "" "\n" @@ -2200,7 +2391,7 @@ msgstr "" "\n" "# %u `vpath' arama yolu.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 #, fuzzy msgid "" "\n" @@ -2209,7 +2400,7 @@ msgstr "" "\n" "# Genel arama yolu (`VPATH' çevre değişkeni) yok." -#: src/vpath.c:631 +#: src/vpath.c:628 #, fuzzy msgid "" "\n" @@ -2220,37 +2411,47 @@ 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" 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)" msgstr "" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + #~ msgid "# Invalid value in `update_status' member!" #~ msgstr "# `update_status' üyesinde geçersiz değer!" @@ -2298,6 +2499,21 @@ msgstr "" #~ msgid "virtual memory exhausted" #~ msgstr "sanal bellek tükendi" +#~ 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ı" diff --git a/po/uk.gmo b/po/uk.gmo index 3112ee8664b235a35b0d389832d40ef256cdde78..f78894e76f8691887c6b98ff4ed9ba5f40a896a2 100644 GIT binary patch delta 15461 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

QsEYVC?nw_aU zAxCst!LTo zZqsSW^b|*iQDtHcqeAbjC^GHN$;#G}oMhOMCRvk3Cc9J937?pm_RJJ+rZ_kC-eC0W zv#Yx49`R1oT`ALKo8q4FMW43SNVf8bC#V?37(smvV@KaCqiWJt!_ha~IFnS>IGA*} z0*{eJs1^Cf_iJNoQM3*{&1LtP*_uH<9aCoO$sWqIcxm_^?|;))Hp7w0`XkbFj1dF3 zR4#UZj-8S-z8Tmi^x;Mco6F;Iq!=-SLTiirQmhY;GW0bd3 zupi7Dq{CW3jluu68C8ZR1*a#w)9mh;5M$WTxRPd>JT+#|RlAOc7R!5r* z(ndNnT*>CX@i0U2&>HzeXBctAq9gvm0l8IAGZ$+)VoVyA5I52zYx?cH0=B zeSd6Z{lbwCZ{AMkLyUW)+WOjzzGpLrj*XEcVd&Ua#^JGgX@@gAH8acjU~H77`pS>{ z(N?i&6PRbA@89Dm1=Y!LIH&({w0xr`RkpRVPNU>hUTGYNR$?+-snc8NX$}u(i!8ZV zzKrpcr^Py^I$dTges}QcE~oC{&FYw?sy)p<#o=_Ahj;#DUrROvhlf*6f6g*ySLbU^ zRvO2fI&iGRMfX5-0@{DaoTF0+aKXMcS<5u;6IML{xh;BW7hHr-}_6yv^Aieh64XF z0?De6bZtDAQo_vgu!l8(T7iM}-F z(zqxvpEXK{tdn;eYdTm&Z{v}&a~`cQ zt+UbjMt$E8>;G;u{Hud&nE5+ox^;>NsY`keJq4~EORW39&0vBqRwod(f&+0+O z?dPK8`~xL8ieOE{yQQ^pWJ^O^j_`Yu!?8P04;$07c1&S( zeV^>J+v;tVx-&N_(;u}QFB+2gQrn=Z+aEdW3QOhpdHJnX6*DO-@ShAUHv?W&j1&hQ zY&|Jn5>d3ne3=JcEKyrxM)BlwhFHgj9xY#qzUqe>*^E&qDh^W4NdnX{ecapya#nE9 zDWWA$VA}+qHan~!7Rcs*>=%1_EEHX)+zFck1UjzlnNq8pe%c1;n7%>#aX@|OBh+lS9-TnL~?@o3a8@+j?lxL zu5w_Imt2%wRi#Y2Txw5FJt4zW+Fpn)>8M0#k$ztCf zg>NR=ziOux`&ck*c!61pN91o{qcQXX|6h3XE5;m0L=X9o5n}Z|lLG($9SX)jPSh~| zdg7Rodvdig@J9J|57p}**1{vjXJqDu83}n_V|HFxW%HeKnxc`d%GZt2{X&D196y?I z$63?3zrIXG!p=t$^|Dyru!j5HsM7M0#P5xQykAQgfwyY#SyIVpbD^3s^WCQ9RG;~E zEq!HKtU32#Bl<$9j0pK{gppq`*syQbjXRsmS?`!5XL<*fv3^(>znrUAo(Gwe$*&LN z;Q1Q9iD$Rjf;#EaS-Ggw`avO$WvoVD!fUN<#<*Qojb-O!j6N5uSZtHK-HjvXYqum~f97r1 z$@0QjaN!AGL zegAW{VyW_MFaJ@gFg^~AS2sslp*04-SJPMZy}Ch0uZz{a1!m4=cU#{Ihs}2j-&t(H z!uOE*VL(+glXVuiP~R}JLw-AwC=p(Qyd9;8PMe$Lkomc_T8;kQ3^AI#mW>lPY8f%t z|7z^IUaj3DJ5`RN70hLRzj46v4Y$$!$~*Mi`_u5hUB?)GqP*eyAj}thW09?Y(ZPYU z@)0FlSf0hU*yulOeJaUkA7Auz^Hpzt(#vatm%8;`pbEgKa=o6h@`LT>kDgja&zq5G I({HB!FXqn5=l}o! delta 10994 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 diff --git a/po/uk.po b/po/uk.po index 2ed7e54..93d8a15 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. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\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: 2020-01-03 12:37+0200\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-19 20:05+0300\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:1107 msgid "" "\n" "# Directories\n" @@ -136,223 +141,254 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, час модифікації %s): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): " -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (пристрій %ld, івузол %ld): " -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "Ні" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " файлів, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "ні" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " недосяжних цілей" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " на поточний момент." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Спосіб для файла «%s» було задано %s:%lu," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Спосіб для файла «%s» було знайдено за допомогою пошуку неявних правил," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "але \"%s\" і \"%s\" тепер вважаються одним і тим же ж файлом. " -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома " "двокрапками" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією " "двокрапкою" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Вилучаємо проміжний файл «%s»" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "Вилучаємо проміжні файли...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE і .SECONDARY є взаємно виключними" + +#: src/file.c:942 msgid "Current time" msgstr "Поточний час" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: часова позначка поза допустимим діапазоном; замінюємо на %s" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# Не є метою:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Вартісний файл (залежність .PRECIOUS)." -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоціль (залежність .PHONY)." -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# Мета, що викликається з командного рядка." -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Типово, MAKEFILES, або -include/sinclude makefile." -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# Вбудоване правило" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# Пошук неявних правил виконано." -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# Пошук неявних правил не було виконано." -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного або статичного шаблону: \"%s\"\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# Файл є проміжною залежністю." -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файл є передумовою .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Файл є вторинним (передумова .SECONDARY)." + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# Збирає також:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# Час зміни ніколи не перевірявся." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Файл не існує." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Файл дуже старий." -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# Востаннє оновлено %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# Файл був оновлений." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Файл не було оновлено." -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Виконується обробка (ЦЕ ПОМИЛКА)" -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ці залежності вже обробляються (ЦЕ ПОМИЛКА)." -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# Успішно оновлено." -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# Повинно бути оновлено (встановлений ключ -q)." -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# Спроба оновлення безуспішна." -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# Некоректне значення члена \"command_state\"!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -360,7 +396,7 @@ msgstr "" "\n" "# Файли" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -370,124 +406,142 @@ msgstr "" "# статистика щодо таблиці хешів файлів:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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:1533 +#: 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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file: не вказано назви файла" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: надто багато аргументів" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, c-format msgid "file: invalid file operation: %s" msgstr "file: некоректна дія над файлом: %s" -#: src/function.c:2405 +#: src/function.c:2527 #, 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:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реалізовано на цій платформі: функція «%s»" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\"" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "Порожня назва функції" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "Некоректна назва функції: %s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "Назва функції є задовгою: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некоректна мінімальна кількість аргументів (%u) функції %s" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некоректна максимальна кількість аргументів (%u) функції %s" @@ -577,134 +631,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:326 #, 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:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Намагаємося бути ретельнішими.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Перевіряємо правило взірця «%s» з основою «%.*s».\n" -#: src/implicit.c:490 +#: src/implicit.c:506 #, 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:768 #, 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:770 #, 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:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" -msgstr "Пробую залежність правило \"%s\".\n" +msgstr "Перевіряємо передумову правила «%s».\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" -msgstr "Пробую неявні залежності \"%s\".\n" +msgstr "Перевіряємо неявну передумову «%s».\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "«%s» має існувати.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Знайдено «%s».\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Використовуємо правило сумісності «%s» через «%s».\n" -#: src/implicit.c:772 +#: src/implicit.c:856 #, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Виявлено залежність «%s» у форматі VPATH «%s».\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Пошук правила з явним файлом «%s».\n" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Відкидаємо правило «%s» через неможливість передумови «%s».\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Не знайдено «%s».\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Знайдено неявне правило «%s» для «%s».\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Шукаємо правило сумісності для «%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Не знайдено неявних правил для \"%s\".\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Не вдалося створити тимчасовий файл" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (зроблений дамп пам'яті)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (ігнорується)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<вбудований>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Очікування завершення завдань..." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (віддалений)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Підбираємо вдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Підбираємо невдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Знищення тимчасового командного файла %s\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" "Спроба витикання тимчасового файла пакетної обробки %s зазнала невдачі (%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -713,89 +827,88 @@ msgstr "" "\n" "Під час невдалого запуску кількість аргументів дорівнювала %d\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Отримано символ для дочірнього процесу %p (%s).\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: мети «%s» не існує" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: оновлення мети «%s» з такої причини: %s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "мети не існує" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "ця операційна система не дозволяє встановлювати обмеження на завантаження" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "неможливо встановити обмеження на завантаження: " -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, 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:2244 #, 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:2252 #, 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:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ймовірно, завершилося місце у середовищі" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Створюємо тимчасовий пакетний файл %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -804,7 +917,7 @@ msgstr "" "Вміст файла пакетної обробки:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -813,7 +926,7 @@ msgstr "" "Вміст пакетного файла:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -824,44 +937,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 "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» не передбачено." +msgid "The 'load' operation is not supported on this platform" +msgstr "На цій платформі виконання дії «load» не передбачено" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "Ключі:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ігнорується, для сумісності.\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безумовно обробляти всі записи мети.\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -870,18 +993,18 @@ msgstr "" " Перейти до каталогу до виконання будь-яких " "дій.\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d Вивести діагностичні повідомлення.\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ПРАПОРЦІ] Вивести діагностичні повідомлення вказаних " "типів.\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -890,12 +1013,12 @@ msgstr "" " Змінні середовища мають вищий пріоритет за " "змінні makefile.\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК як інструкцію makefile.\n" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -903,16 +1026,16 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Використати ФАЙЛ як makefile.\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Вивести це повідомлення і вийти.\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ігнорувати помилки від способів збирання.\n" -#: src/main.c:359 +#: src/main.c:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -920,7 +1043,7 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Виконати пошук включених makefile у каталозі.\n" -#: src/main.c:362 +#: src/main.c:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -928,14 +1051,20 @@ msgstr "" " -j [N], --jobs[=N] Виконувати одночасно N завдань; якщо не " "вказано — необмежену кількість.\n" -#: src/main.c:364 +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛЬ Вибрати стиль, який використовуватиме сервер " +"завдань.\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -945,7 +1074,7 @@ msgstr "" " Не запускати декількох завдань, якщо " "навантаження перевищує N.\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -953,7 +1082,7 @@ msgstr "" " -L, --check-symlink-times Використовувати новіший час зміни з часів " "зміни посилання і мети.\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -963,7 +1092,7 @@ msgstr "" " Не застосовувати способів збирання, просто " "вивести назви способів.\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -973,7 +1102,7 @@ msgstr "" " Вважати ФАЙЛ дуже старим і не виконувати його " "повторного збирання.\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -982,11 +1111,11 @@ msgstr "" " синхронізувати виведені дані паралельних " "завдань за ТИПом.\n" -#: src/main.c:380 +#: src/main.c:364 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:366 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -995,25 +1124,33 @@ msgstr "" "способів; код завершення показує, чи все вже " "зроблено.\n" -#: src/main.c:384 +#: src/main.c:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не виводити способи збирання.\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Виводити способи збирання (вимкнути режим --" "silent).\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1021,26 +1158,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Вимкнути -k.\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Змінювати час доступу до мети замість її " "повторного збирання.\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace Вивести дані щодо трасування.\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Вивести дані щодо версії make і вийти.\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n" -#: src/main.c:403 +#: src/main.c:390 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1048,7 +1185,7 @@ msgstr "" " --no-print-directory Вимкнути -w, навіть якщо вмикання було " "виконано неявним чином.\n" -#: src/main.c:405 +#: src/main.c:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1056,7 +1193,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Вважати ФАЙЛ завжди новим.\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1064,27 +1201,60 @@ msgstr "" " --warn-undefined-variables Попереджати про посилання на невизначену " "змінну.\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "помилка запису: stdout" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "порожній рядок не може бути назвою файла" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "невідома специфікація рівня діагностики, «%s»" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "невідомий тип синхронізації виведених даних, «%s»" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Використання: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Цю програму зібрано для %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Цю програму зібрано для %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Повідомлюйте про помилки до \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1099,28 +1269,32 @@ msgstr "" "Прапорці виключення = %lx\n" "Адреса виключення = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Порушення правил доступу: дія з запису за адресою 0x%p\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (тимчасовий файл): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1128,175 +1302,165 @@ msgstr "" "попередження: сервер завдань недоступний: використовуємо -j1. Додайте «+» до " "батьківського правила збирання." -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "попередження: у submake вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:1781 +#: src/main.c:1930 #, 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 (тимчасовий файл)" +msgid "Makefile from standard input specified twice" +msgstr "Makefile зі стандартного джерела вхідних даних вказано двічі" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (тимчасовий файл)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: тимчасовий файл %s: %s" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "попередження: у makefile вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "На цій платформі паралельної обробки завдань (-j) не передбачено." -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Повертаємося до режиму єдиного завдання (-j1)." -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Використовуємо контролер сервера завдань %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Використовуємо семафор синхронізації виведення %s\n" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Підтримки символічних посилань не передбачено: вимикаємо -L." -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Увімкнено режим перемішування: %s\n" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Оновлення make-файлів...\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметься.\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не вдалося завантажити" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Спроба перезібрати make-файл \"%s\" безуспішна." -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "Make-файл \"%s\", який включається, не було знайдено." -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл \"%s\" не було знайдено" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, 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:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL містить декілька записів мети" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "Нема цілей" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "Не задані цілі і не знайдений make-файл" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "Оновлення цілей мети...\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "разом з «%s%s» мало бути вказано непорожній рядковий аргумент" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ \"-%c\" повинен використовуватися з цілим додатним аргументом" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЗібрано для %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЗібрано для %s (%s)\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1305,7 +1469,7 @@ msgstr "" "\n" "# База даних Make, надрукована %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1314,381 +1478,412 @@ msgstr "" "\n" "# Друк бази даних Make завершено %s\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Використовуємо типовий спосіб для «%s».\n" -#: src/misc.c:743 -msgid "User access" -msgstr "Доступ користувача" +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "створення тимчасового файла %s: %s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Доступ make" +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "від'єднання тимчасового файла %s: %s" -#: src/misc.c:825 -msgid "Child access" -msgstr "Доступ дочірнього процесу" +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: тимчасовий файл %s: %s" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "помилка запису: stdout" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"попередження: не вдалося отримати блокування виведення, вимикаємо " +"синхронізацію виведення." -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Зупинка.\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "Cannot open jobserver %s: %s" +msgstr "Не вдалося відкрити сервер завдань %s: %s" -#: src/output.h:62 +#: src/posixos.c:186 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:190 msgid "creating jobs pipe" msgstr "створюємо канал завдань" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "дублюємо канал завдань" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 #, c-format -msgid "Jobserver client (fds %d,%d)\n" -msgstr "Клієнт сервера завдань (fd %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:363 msgid "write jobserver" msgstr "запис до сервера завдань" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "сервер завдань вимкнено" -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "виконання pselect для каналу завдань" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "читання записів з потоку завдань" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "некоректний рядок --sync-mutex «%s»" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не вдалося відкрити семафор синхронізації виведення %s: %s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Читання make-файла \"%s\"" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (немає типової мети)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (шлях пошуку)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (не зважати)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (не розширювати ~)" -#: src/read.c:655 +#: src/read.c:663 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Пропускаємо мітку UTF-8 у файлі makefile «%s»\n" -#: src/read.c:658 +#: src/read.c:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Пропускаємо мітку UTF-8 у буфері файла makefile\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "визначення способу збирання розпочинається до визначення першої мети" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "пропущено правило до способу" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "пропущено розділювач" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "пропущений шаблон цілі" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "не один шаблон цілі" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "шаблон цілі не містить \"%%\"" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "пропущена \"endif\"" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "порожнє ім'я змінної" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "зайвий текст після директиви «define»" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "пропущена \"endif\", незавершена \"define\"" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "зайвий текст після директиви «endef»" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "зайвий текст після директиви \"%s\"" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "зайва \"%s\"" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "в умовному виразі можлива лише одна директива `else'" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "Помилкове форматування специфічного для мети визначення змінної" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT не повинна мати передумов" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT не повинна містити команд" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "у способах збирання не можна вказувати залежностей" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "для згрупованих цілей має бути надано спосіб збирання" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "змішані неявні правила і правила зі статичними зразками" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "змішані неявні і звичайні правила" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "ціль \"%s\" не відповідає зразку цілей" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "цільовий файл \"%s\" має входження і з \":\", і з \"::\" " -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "ціль \"%s\" зазначено декілька разів у одному правилі" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "попередження: замінюємо спосіб для мети «%s»" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "попередження: ігноруємо застарілий спосіб для мети «%s»" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** змішані неявні і звичайні правила: застарілий синтаксис" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "попередження: перевизначаємо участь у групах для мети «%s»" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "Ціль \"%s\" не вимагає виконання команд." -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "\"%s\" не вимагає оновлення." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Обрізаємо файл «%s».\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНема правила для створення цілі \"%s\"%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Обробка цільового файла \"%s\".\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Попередня спроба оновити файл \"%s\" завершилася безуспішно.\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файл \"%s\" вже було оброблено.\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "Все ще оновлюється файл \"%s\".\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Оновлення файла \"%s\" завершено.\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "Не виявлено файла з назвою «%s».\n" -#: src/remake.c:494 +#: src/remake.c:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1696,147 +1891,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:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Використовуємо типовий спосіб для «%s».\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Циклічна залежність %s <- %s пропущена." -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "Завершено обробку попередніх залежностей файла мети «%s».\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Цілі, від яких залежить \"%s\", збираються.\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Аварійний зупинка на цільовому файлі \"%s\".\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Ціль \"%s\" не була перезібрана через помилки." -#: src/remake.c:751 +#: src/remake.c:814 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Залежність «%s» визначено для мети «%s» лише порядком збирання.\n" -#: src/remake.c:756 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Залежності «%s» мети «%s» не існує.\n" -#: src/remake.c:761 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Залежність «%s» є новішою за мету «%s».\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Залежність «%s» є старішою за мету «%s».\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Ціль \"%s\" оголошена з двома двокрапками і не має залежностей.\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Немає способу збирання «%s», всі попередні залежності не змінено.\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Збираємо «%s» через встановлення ключа always-make.\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "Потреби у повторному збиранні мети «%s» немає" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; використовуємо назву VPATH «%s»" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "Необхідно перезібрати ціль \"%s\".\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Ігноруємо назву VPATH «%s».\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Застосовуємо спосіб «%s».\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Спроба перезібрати цільовий файл \"%s\" безуспішна.\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Цільовий файл \"%s\" успішно перезібраний.\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Цільовий файл \"%s\" вимагає перезбирання з ключем -q.\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Використання типових команд для «%s».\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Увага: час зміни файла «%s» перебуває на %s с у майбутньому" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +2034,7 @@ msgstr "" "\n" "# Неявні правила" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1852,7 +2042,7 @@ msgstr "" "\n" "# Неявних правил нема." -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1861,11 +2051,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 +2274,44 @@ msgstr "" "# статистика щодо таблиці хешів:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "автоматична" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "типовий" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "визначена у середовищі" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "файл make" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "заданий ключ -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "визначена у командному рядку" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "Директива «override»" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (з \"%s\", рядок %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# стан змінних у хеш-таблиці:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2124,7 +2319,7 @@ msgstr "" "\n" "# Змінні\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2132,7 +2327,7 @@ msgstr "" "\n" "# Специфічні для зразка значення змінних" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2140,7 +2335,7 @@ msgstr "" "\n" "# Немає специфічних для зразка значень змінних." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2149,7 +2344,7 @@ msgstr "" "\n" "# %u специфічних для зразка значень змінних" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "попередження: невизначена змінна \"%.*s\"" @@ -2175,22 +2370,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2198,11 +2393,11 @@ msgstr "" "\n" "# Шляхи пошуку VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Не визначено шлях пошуку \"vpath\"." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2211,7 +2406,7 @@ msgstr "" "\n" "# %u шляхи пошуку \"vpath\".\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2219,7 +2414,7 @@ msgstr "" "\n" "# Не визначено загальний шлях пошуку (змінна \"VPATH\")." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2229,17 +2424,17 @@ 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" -#: 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)" @@ -2247,21 +2442,65 @@ msgstr "" "внутрішня помилка: не вдалося відкрити семафор сервера завдань «%s»: " "(помилка %ld: %s)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клієнт сервера завдань (семафор %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "спускаємо семафор сервера завдань: (Помилка %ld: %s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "очіккування семафора або дочірнього процесу: (помилка %ld: %s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не вдалося обробити семафор синхронізації виведення %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "некоректний семафор синхронізації виведення: %s" + +#~ 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 53aac6bfe510dec5e60146c2907e057d2a755003..400637efeac64b94f8aaae051940bc31d033aaa1 100644 GIT binary patch delta 8679 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 delta 13075 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\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:1107 msgid "" "\n" "# Directories\n" @@ -139,219 +144,251 @@ msgstr "" "\n" "# ThÆ° mục\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (khóa %s, mtime %I64u): " -#: src/dir.c:1131 +#: src/dir.c:1159 #, 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:1164 #, 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:1168 src/dir.c:1189 msgid "No" msgstr "Không" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " tập tin, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "không" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " việc không thể làm được" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " cho đến giờ." -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, 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:277 #, 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:281 #, 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:284 #, 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:304 #, 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:310 #, 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:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Đang xóa tập tin trung gian “%s”" -#: src/file.c:412 +#: src/file.c:411 #, 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:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "Giờ hiện tại" -#: src/file.c:876 +#: src/file.c:946 #, 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:1089 msgid "# Not a target:" msgstr "# Không phải là đích:" -#: src/file.c:1021 +#: src/file.c:1094 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:1096 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:1098 msgid "# Command line target." msgstr "# Đích dòng lệnh." -#: src/file.c:1027 +#: src/file.c:1100 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:1102 msgid "# Builtin rule" msgstr "# Quy tắc dá»±ng sẵn" -#: src/file.c:1031 +#: src/file.c:1104 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:1105 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:1107 #, 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:1109 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:1111 +#, 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:1113 +#, 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:1117 msgid "# Also makes:" msgstr "# CÅ©ng tạo:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# ChÆ°a kiểm tra giờ sá»­a đổi." -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# Tập tin không tồn tại." -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# Tập tin rất cÅ©." -#: src/file.c:1055 +#: src/file.c:1132 #, 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:1135 msgid "# File has been updated." msgstr "# Tập tin đã được cập nhật." -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# Tập tin chÆ°a được cập nhật." -#: src/file.c:1062 +#: src/file.c:1139 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:1142 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:1151 msgid "# Successfully updated." msgstr "# Cập nhật thành công." -#: src/file.c:1078 +#: src/file.c:1155 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:1158 msgid "# Failed to be updated." msgstr "# Gặp lỗi khi cập nhật." -#: src/file.c:1086 +#: src/file.c:1163 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:1182 msgid "" "\n" "# Files" @@ -359,7 +396,7 @@ msgstr "" "\n" "# Tập tin" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -369,126 +406,149 @@ msgstr "" "# thống kê bảng băm tập tin:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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: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:821 -msgid "non-numeric second argument to 'wordlist' function" +#: 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: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) 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:2343 src/function.c:2373 #, 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:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "mở: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, 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:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "đóng: %s: %s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file: quá ít đối số" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, 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:2539 #, 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:2608 #, 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:2791 #, c-format msgid "Empty function name" msgstr "Tên hàm trống rỗng" -#: src/function.c:2669 +#: src/function.c:2793 #, 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:2795 #, c-format msgid "Function name too long: %s" msgstr "Tên hàm quá dài: %s" -#: src/function.c:2674 +#: src/function.c:2798 #, 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:2801 #, 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”" @@ -578,133 +638,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:326 +#, 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:451 #, 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:501 +#, 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:506 #, 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:768 +#, 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:770 +#, 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:787 #, 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:788 #, 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:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tập tin “%s” không tồn tại.\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, 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:856 +#, 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:870 +#, 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:885 +#, 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:886 #, 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:927 +#, 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:931 +#, 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:1144 +#, 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:1151 +#, 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:1157 +#, 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:380 +#, 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:552 msgid " (core dumped)" msgstr " (đổ lõi)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (bỏ qua)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, 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:677 #, 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:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (máy chủ)" -#: src/job.c:898 +#: src/job.c:914 #, 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:915 #, 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:966 #, 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:972 #, 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:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -713,89 +834,89 @@ 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:1650 #, 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:1883 #, 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:1905 +#: src/job.c:1909 #, 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:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: đích “%s” không tồn tại" + +#: src/job.c:2104 #, 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:2106 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:2195 +#, 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:2207 +#, 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:2221 +#, 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:2236 +#, 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:2244 +#, 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:2252 +#, 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:2530 #, 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:2630 #, 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:2869 #, 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:3306 src/job.c:3510 #, 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:3314 #, c-format msgid "" "Batch file contents:\n" @@ -804,7 +925,7 @@ msgstr "" "Nội dung tập tin bó lệnh:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -813,7 +934,7 @@ msgstr "" "Nội dung tập tin bó lệnh:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +944,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:317 msgid "Options:\n" msgstr "Tùy chọn:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Bỏ qua để tÆ°Æ¡ng thích.\n" -#: src/main.c:338 +#: src/main.c:320 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:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -868,17 +999,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:325 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:327 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:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -886,13 +1017,13 @@ msgstr "" " -e, --environment-overrides\n" " Biến môi trường đè tập tin makefile.\n" -#: src/main.c:350 +#: src/main.c:332 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:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -900,15 +1031,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:337 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:339 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:341 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -916,7 +1047,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:344 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -924,12 +1055,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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -938,14 +1073,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:353 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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -954,7 +1089,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:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -963,7 +1098,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:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -972,34 +1107,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:364 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:366 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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 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:377 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:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1007,30 +1148,30 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Tắt -k.\n" -#: src/main.c:395 +#: src/main.c:382 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:384 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:386 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:388 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:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1038,34 +1179,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:395 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:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "lỗi ghi: đầu ra tiêu chuẩn" + +#: src/main.c:742 #, 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:834 #, 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:874 #, 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:898 +#, 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:904 +#, 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:906 +#, 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:909 +#, 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:940 #, 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:947 #, c-format msgid "" "\n" @@ -1080,27 +1256,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:955 #, 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:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "unlink (bỏ liên kết tập tin tạm): " + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1108,165 +1288,154 @@ 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:1841 #, 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:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (tập tin tạm)" -#: src/main.c:2004 +#: src/main.c:2095 #, 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:2191 #, 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:2192 #, 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:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "không hiểu kiểu output-sync “%s”" + +#: src/main.c:2255 #, 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:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "Cập nhật makefile…\n" -#: src/main.c:2226 +#: src/main.c:2397 #, 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:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: gặp lỗi khi tải" + +#: src/main.c:2528 #, 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:2548 #, 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:2552 #, 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:2700 +#, 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:2708 #, 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:2863 #, 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:2887 #, c-format msgid "No targets" msgstr "Không có đích" -#: src/main.c:2581 +#: src/main.c:2889 #, 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:2898 #, 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:2922 #, 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:3186 #, 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:3267 #, 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:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%sĐược biên dịch cho %s\n" -#: src/main.c:3365 +#: src/main.c:3654 #, 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:3665 +#, 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 +1445,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:3682 #, c-format msgid "" "\n" @@ -1285,7 +1454,7 @@ msgstr "" "\n" "# CÆ¡ sở dữ liệu Make, in lúc %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1294,383 +1463,413 @@ 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:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:664 -msgid "Initialized access" -msgstr "Truy cập đã được khởi tạo" +#: src/misc.c:613 +#, 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:743 -msgid "User access" -msgstr "Truy cập người dùng" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Tạo tập tin bó lệnh tạm: %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Truy cập Make" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (bỏ liên kết tập tin tạm): " -#: src/misc.c:825 -msgid "Child access" -msgstr "Truy cập con" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "lỗi ghi: đầu ra tiêu chuẩn" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr ". Dừng.\n" # Variable: don't translate / Biến: đừng dịch -#: src/output.c:658 +#: src/output.c:510 #, 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:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 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:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "nhân bản ống dẫn công việc" -#: src/posixos.c:104 +#: src/posixos.c:207 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:261 +#, 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:363 msgid "write jobserver" msgstr "ghi lại trình phục vụ công việc" -#: src/posixos.c:300 +#: src/posixos.c:483 #, 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:486 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:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "đọc ống dẫn công việc" -#: src/read.c:181 +#: src/posixos.c:672 +#, 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:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "không hiểu kiểu output-sync “%s”" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "Đang đọc makefile “%s”" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (không có mục đích mặc định)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (đường dẫn tìm kiếm)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (không quan tâm)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (không nối thêm ~)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, 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:795 #, 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:1002 #, 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:1053 #, 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:1154 #, 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 #, c-format msgid "missing separator" msgstr "thiếu dấu phân cách" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "thiếu mẫu đích" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "nhiều mẫu đích" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "mẫu đích không chứa “%%”" -#: src/read.c:1404 +#: src/read.c:1349 #, 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:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "tên biến rỗng" -#: src/read.c:1478 +#: src/read.c:1423 #, 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:1448 #, 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:1476 #, 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:1548 #, 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:1549 #, c-format msgid "extraneous '%s'" msgstr "gặp “%s” thừa" -#: src/read.c:1632 +#: src/read.c:1577 #, 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:1853 #, 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:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, 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:2057 #, 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:2100 #, 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:2123 #, 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:2155 #, 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:2170 src/read.c:2221 #, 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:2176 #, 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:2186 #, 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:2189 #, 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:2308 #, 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:2325 #, 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:2683 #, 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:254 #, 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:255 #, c-format msgid "'%s' is up to date." msgstr "“%s” đã cập nhật rồi." -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "Xén bớt tập tin “%s”.\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, 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:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "Coi tập tin đích “%s”.\n" -#: src/remake.c:432 +#: src/remake.c:459 #, 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:471 #, 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:481 #, 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:484 #, 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:513 #, 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:520 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1678,148 +1877,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:538 +#, 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:558 #, 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:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Bỏ phụ thuộc vòng tròn %s <- %s." -#: src/remake.c:674 +#: src/remake.c:737 #, 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:743 #, 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:757 #, 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:762 #, 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:814 #, 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:819 #, 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:824 #, 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:827 #, 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:845 #, 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:852 #, 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:857 #, 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:865 #, 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:867 #, c-format msgid "; using VPATH name '%s'" msgstr "; dùng tên VPATH “%s”" -#: src/remake.c:824 +#: src/remake.c:891 #, 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:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Bỏ qua tên VPATH “%s”.\n" -#: src/remake.c:839 +#: src/remake.c:906 #, 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:913 #, 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:916 #, 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:919 #, 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:1118 #, 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:1499 #, 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:1747 #, 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 +2020,7 @@ msgstr "" "\n" "# Quy tắc ngầm" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1835,7 +2028,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 +2037,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 +2263,44 @@ msgstr "" "# thống kê bảng băm tập tin:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "tá»± động" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "mặc định" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "môi trường" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "môi trường với -e" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "dòng lệnh" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "chỉ thị “override”" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (từ “%s”, dòng %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 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:1888 msgid "" "\n" "# Variables\n" @@ -2110,7 +2308,7 @@ msgstr "" "\n" "# Biến\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2118,7 +2316,7 @@ msgstr "" "\n" "# Giá trị biến đặc tả cho mẫu" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2126,7 +2324,7 @@ msgstr "" "\n" "# Không có giá trị biến đặc tả cho mẫu." -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2135,7 +2333,7 @@ msgstr "" "\n" "# %u giá trị biến đặc tả cho mẫu" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "cảnh báo: biến “%.*s” chÆ°a được định nghÄ©a" @@ -2160,22 +2358,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2183,11 +2381,11 @@ msgstr "" "\n" "# Đường dẫn tìm kiếm VPATH\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# Không có đường dẫn tìm kiếm “vpath”." -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2196,7 +2394,7 @@ msgstr "" "\n" "# %u đường dẫn tìm kiếm “vpath”.\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2204,7 +2402,7 @@ msgstr "" "\n" "# Không có đường dẫn tìm kiếm chung (biến “VPATH”)." -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2214,38 +2412,73 @@ msgstr "" "# Đường dẫn tìm kiếm chung (biến “VPATH”):\n" "# " -#: src/w32/w32os.c:44 +#: src/w32/w32os.c:224 #, 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 +#: src/w32/w32os.c:259 #, c-format msgid "" "internal error: 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:262 #, 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:310 #, 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:381 #, 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:449 +#, 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:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tên hàm không hợp lệ: %s" + +#~ 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" + +#~ 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." + +#~ 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" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 233ca38448a8062d13e883d8719553d368c28e5c..36a485661490486e3b697ca503c6764c3ac6d7a5 100644 GIT binary patch delta 8656 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 diff --git a/po/zh_CN.po b/po/zh_CN.po index 2d15ff4..ced185b 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.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: 2022-10-31 02:23-0400\n" "PO-Revision-Date: 2020-01-05 15:27-0500\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" @@ -22,32 +22,32 @@ msgstr "" "X-Generator: Poedit 2.2.4\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 的返回码不当" @@ -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:1107 msgid "" "\n" "# Directories\n" @@ -137,218 +142,250 @@ msgstr "" "\n" "# 目录\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (关键字 %s,修改时间 %I64u):" -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):" -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (设备 %ld,i-节点 %ld):" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "无" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " 文件, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "无" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " 迄今为止。" -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "关于文件“%s”的命令配方在 %s:%lu 处指定," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "关于文件“%s”的命令配方通过隐含规则搜索而找到," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但“%s”现在被看做“%s”的同一个文件。" -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "无法将单冒号“%s”重命名为双冒号“%s”" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "无法将双冒号“%s”重命名为单冒号“%s”" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在删除中间文件“%s”" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "正在删除中间文件...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 msgid "Current time" msgstr "当前时间" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:时间标记超出范围;正在替换 %s" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# 不是一个目标:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要文件 (.PRECIOUS的前提)。" -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目标 (.PHONY的前提)。" -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# 命令行目标。" -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 缺省的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# 内建规则" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# 对隐含规则的搜索已完成。" -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# 对隐含规则的搜索尚未完成。" -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隐含/静态模式主干:“%s”\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# 文件是一个中间前提。" -#: src/file.c:1040 +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 重要文件 (.PRECIOUS的前提)。" + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 假目标 (.PHONY的前提)。" + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# 还要制作:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# 从不检查修改时间。" -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# 文件不存在。" -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# 文件非常陈旧。" -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# 文件已经被更新。" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# 文件尚未被更新。" -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在运行的配方 (这是 BUG)。" -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在运行的依赖性配方 (这是 BUG)。" -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 设定)。" -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# 更新失败。" -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# “command_state”成员中存在无效的值!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -356,7 +393,7 @@ msgstr "" "\n" "# 文件" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -366,125 +403,148 @@ msgstr "" "# 文件杂凑表状态:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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 "" + +#: 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 "“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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file:缺少文件名" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file:太多参数" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "函数“%2$s”的参数数量 (%1$d) 不够" -#: src/function.c:2417 +#: src/function.c:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未实现:函数“%s”" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "对函数“%s”的未终止的调用:遗漏“%c”" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "空函数名" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "无效的函数名称:%s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "函数名称太长:%s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函数“%2$s”的最少参数数量 (%1$u) 无效" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函数“%2$s”的最多参数数量 (%1$u) 无效" @@ -574,133 +634,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 -#, 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:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "避免隐含规则递归。\n" -#: src/implicit.c:484 +#: src/implicit.c:451 #, 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:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "用主干“%.*s”尝试匹配模式规则。\n" -#: src/implicit.c:717 +#: src/implicit.c:506 #, c-format -msgid "Rejecting impossible rule prerequisite '%s'.\n" +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主干太长:'%s%.*s'.\n" + +#: src/implicit.c:768 +#, 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:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "拒绝不可能的隐含前提“%s”。\n" -#: src/implicit.c:732 +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "尝试规则前提“%s”。\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "尝试隐含前提“%s”。\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "文件“%s”不存在。\n" + +#: src/implicit.c:834 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s:更新“%s”,因为:%s" + +#: src/implicit.c:856 +#, 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:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "前提“%s”在 VPATH“%s”中发现\n" -#: src/implicit.c:786 +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在寻找包含中间文件“%s”的规则。\n" + +#: src/implicit.c:886 #, 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" +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "拒绝不可能的规则前提“%s”。\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "找不到关于“%s”的隐含规则。\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到一条关于“%s”的隐含规则。\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在为“%s”寻找隐含规则。\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找不到关于“%s”的隐含规则。\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" msgstr "无法创建临时文件\n" -#: src/job.c:548 +#: src/job.c:552 msgid " (core dumped)" msgstr " (核心已转储)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<内置>" -#: src/job.c:573 -#, c-format -msgid "%s[%s: %s] Error %d%s" +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s:%s] 错误 %d%s" -#: src/job.c:662 +#: src/job.c:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的任务...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (远程)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止获胜的子进程 %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失败的子进程 %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除临时批文件 %s\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理临时批处理文件 %s 失败 (%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -709,86 +830,86 @@ msgstr "" "\n" "失败执行中共有 %d 个参数。\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "获得至进程 %p (%s) 的标记。\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: 目标文件“%s”不存在" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s:更新“%s”,因为:%s" -#: src/job.c:2108 +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: 目标文件“%s”不存在" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "无法在本操作系统中实施负载限制" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "无法实施负载限制:" -#: src/job.c:2200 -#, c-format -msgid "no more file handles: could not duplicate stdin\n" +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" msgstr "没有剩余的文件句柄: 无法复制标准输入\n" -#: src/job.c:2212 -#, c-format -msgid "no more file handles: could not duplicate stdout\n" +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" msgstr "没有剩余的文件句柄: 无法复制标准输出\n" -#: src/job.c:2226 -#, c-format -msgid "no more file handles: could not duplicate stderr\n" +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" msgstr "没有剩余的文件句柄: 无法复制标准错误\n" -#: src/job.c:2241 -#, c-format -msgid "Could not restore stdin\n" +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" msgstr "无法还原标准输入\n" -#: src/job.c:2249 -#, c-format -msgid "Could not restore stdout\n" +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" msgstr "无法还原标准输出\n" -#: src/job.c:2257 -#, c-format -msgid "Could not restore stderr\n" +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" msgstr "无法还原标准错误\n" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 环境变量空间可能会耗尽" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "正在创建临时批文件 %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -797,7 +918,7 @@ msgstr "" "批处理文件内容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -806,7 +927,7 @@ msgstr "" "批处理文件内容:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +937,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 "" + +#: 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." +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 "本平台不支持“load”操作。" -#: src/main.c:335 +#: src/main.c:317 msgid "Options:\n" msgstr "选项:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 为兼容性而忽略。\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 无条件制作 (make) 所有目标。\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目录, --directory=目录 在执行前先切换到 <目录>。\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d 打印大量调试信息。\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗标] 打印各种调试信息。\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -876,12 +1007,12 @@ msgstr "" " -e, --environment-overrides\n" " 环境变量覆盖 makefile 中的变量。\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 将 <字串> 作为 makefile 语句估值。\n" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -889,33 +1020,37 @@ msgstr "" " -f 文件, --file=文件, --makefile=文件\n" " 从 <文件> 中读入 makefile。\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 打印该消息并退出。\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略来自命令配方的错误。\n" -#: src/main.c:359 +#: src/main.c:341 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:344 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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -924,14 +1059,14 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系统负载高于 N 时不启动多任务。\n" -#: src/main.c:369 +#: src/main.c:353 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:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -940,7 +1075,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只打印命令配方,不实际执行。\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -949,7 +1084,7 @@ msgstr "" " -o 文件, --old-file=文件, --assume-old=文件\n" " 将 <文件> 当做很旧,不必重新制作。\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -957,34 +1092,40 @@ msgstr "" " -O[类型], --output-sync[=类型]\n" " 使用 <类型> 方式同步并行任务输出。\n" -#: src/main.c:380 +#: src/main.c:364 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:366 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:368 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:370 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:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不输出配方命令。\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 对配方进行回显(禁用 --silent 模式)。\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -992,32 +1133,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 关闭 -k。\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目标(更新修改时间)而不是重新制作它" "们。\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace 打印跟踪信息。\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 打印 make 的版本号并退出。\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 打印当前目录。\n" -#: src/main.c:403 +#: src/main.c:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1025,33 +1166,66 @@ msgstr "" " -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件\n" " 将 <文件> 当做最新。\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 当引用未定义变量的时候发出警告。\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "写错误: 标准输出" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "空字符串是无效的文件名" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的调试级别定义“%s”" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明输出同步类型“%s”" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [选项] [目标] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"该程序为 %s 编译\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"该程序为 %s (%s) 编译\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "报告错误到 \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1066,186 +1240,180 @@ msgstr "" "异常标志 = %lx\n" "异常地址 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "访问冲突:地址 0x%p 处的写操作\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "删除 (临时文件):" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加 “+” 到父 make 的规则。" -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:1781 -#, c-format -msgid "Makefile from standard input specified twice." +#: src/main.c:1930 +#, 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:1825 -msgid "fwrite (temporary file)" +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" msgstr "fwrite (临时文件)" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支持并行任务 (-j)。" -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重置为单任务模式 (-j1)。" -#: src/main.c:2109 +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "不明输出同步类型“%s”" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支持软链接:禁用 -L。" -#: src/main.c:2190 +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile “%s”可能循环;不会重新执行它。\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 加载失败" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新执行 makefile“%s”失败。" -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile“%s”。" -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile “%s”" -#: src/main.c:2394 -#, c-format -msgid "Couldn't change back to original directory." +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" msgstr "无法回到原始目录。" -#: src/main.c:2402 +#: src/main.c:2708 #, c-format msgid "Re-executing[%u]:" msgstr "重新执行[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "删除 (临时文件):" - -#: src/main.c:2555 +#: src/main.c:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多余一个目标" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "无目标" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "没有指明目标并且找不到 makefile" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "更新目标....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "“%s%s”选项需要非空字符串参数" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "“-%c”选项需要正整数参数" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%s为 %s 编译\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s为 %s (%s) 编译\n" -#: src/main.c:3376 -#, c-format +#: src/main.c:3665 +#, 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 +1423,7 @@ msgstr "" "%s本软件是自由软件:您可以自由修改和重新发布它。\n" "%s在法律允许的范围内没有其他保证。\n" -#: src/main.c:3397 +#: src/main.c:3682 #, c-format msgid "" "\n" @@ -1264,7 +1432,7 @@ msgstr "" "\n" "# make 数据基础,打印在 %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1273,527 +1441,551 @@ msgstr "" "\n" "# 在 %s 上完成 make 数据基础\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "使用“%s”的默认配方。\n" -#: src/misc.c:743 -msgid "User access" -msgstr "用户权限" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "正在创建临时批文件 %s\n" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make 权限" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "删除 (临时文件):" -#: src/misc.c:825 -msgid "Child access" -msgstr "子进程 权限" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (临时文件)" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "写错误: 标准输出" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr "。 停止。\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "不明输出同步类型“%s”" -#: src/posixos.c:90 +#: src/posixos.c:190 msgid "creating jobs pipe" msgstr "正在创建任务管道" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "正在复制任务管道" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "初始化任务服务器管道" -#: src/posixos.c:119 -#, c-format -msgid "internal error: invalid --jobserver-auth string '%s'" +#: src/posixos.c:261 +#, 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:363 msgid "write jobserver" msgstr "写入任务服务器" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "任务服务器关闭" # , fuzzy -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect 任务管道" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "读取任务管道" -#: src/read.c:181 +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "内部错误:非法 --jobserver-auth 验证字符串“%s”" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "不明输出同步类型“%s”" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "正在读入 makefiles...\n" -#: src/read.c:336 +#: src/read.c:330 #, c-format msgid "Reading makefile '%s'" msgstr "正在读入 makefile “%s”" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (没有缺省目标)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (搜索路径)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (不用理)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (没有 ~ 扩展)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "跳过 Makefile 缓冲区中的 UTF-8 BOM\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "配方在第一个目标前开始" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "配方之前遗漏了规则" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "缺失分隔符" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "无目标匹配" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "多个目标匹配" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "目标模式不含有“%%”" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "遗漏“endif”" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "空变量名" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "“endef”指令后含有不该出现的文字" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "遗漏“endef”,未终止的“define”" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "“endef”指令后含有不该出现的文字" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "在“%s”指令之后含有不该出现的文字" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "不该出现的“%s”" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "每个条件只能有一个“else”" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "畸形的针对目标的标量定义" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "依赖无法在配方脚本中定义" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "成组的目标必须提供一个配方" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "混和的隐含和静态模式规则" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "混和的隐含和普通规则" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "目标“%s”不匹配目标模式" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "目标文件“%s”含有 : 和 :: 两种条目" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "目标“%s”在同一个规则中给出了多次" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告:覆盖关于目标“%s”的配方" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告:忽略关于目标“%s”的旧配方" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 隐含和普通规则混合:已弃用的语法" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告:覆盖关于目标“%s”的组成员" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "对“%s”无需做任何事。" -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "“%s”已是最新。" -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "正删除文件“%s”。\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s没有规则可制作目标“%s”%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "正在考虑目标文件“%s”。\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近已尝试过更新文件“%s”并失败。\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "已考虑过文件“%s”。\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "仍然在更新文件“%s”。\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "更新文件“%s”完成。\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "文件“%s”不存在。\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 +#, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "使用“%s”的默认配方。\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "放弃循环依赖 %s <- %s 。" -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "目标文件“%s”的前提已完成。\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "正在制作“%s”的前提。\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "放弃目标文件“%s”。\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "由于错误目标“%s”并未重新制作。" -#: src/remake.c:751 +#: src/remake.c:814 #, 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:819 #, 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:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "前提“%s”比目标“%s”新。\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "前提“%s”比目标“%s”旧。\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "目标“%s”是双冒号目标并且没有前提。\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "没有关于“%s”的配方,并且没有实际改变的前提。\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "由于 always-make 标志所以制作“%s”。\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "不需要重新制作目标“%s”" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr ";使用 VPATH 名称“%s”" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "必须重新制作目标“%s”。\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " 忽略 VPATH 名称“%s”。\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "“%s”的命令配方正在被执行。\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "重新制作目标文件“%s”失败。\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "重新制作目标文件“%s”成功。\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "目标文件“%s”需要以 -q 选项重新制作。\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "使用关于“%s”的默认命令。\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告:文件“%s”的修改时间在未来 %s 秒后" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +1993,7 @@ msgstr "" "\n" "# 隐含规则" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1809,7 +2001,7 @@ msgstr "" "\n" "# 没有隐含规则。" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1818,11 +2010,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 +2230,44 @@ msgstr "" "# 杂凑表统计数据:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "自动" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "默认" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "环境" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "-e 指定的环境变量" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "命令行" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "“override”指令" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (从“%s”,行 %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# 变量的杂凑表状态:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2078,7 +2275,7 @@ msgstr "" "\n" "# 变量\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2086,7 +2283,7 @@ msgstr "" "\n" "# Pattern-specific 变量值" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2094,7 +2291,7 @@ msgstr "" "\n" "# 没有 pattern-specific 变量的值。" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2103,7 +2300,7 @@ msgstr "" "\n" "# %u 个 pattern-specific 变量的值" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "警告:未定义的变量“%.*s”" @@ -2128,22 +2325,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2151,11 +2348,11 @@ msgstr "" "\n" "# VPATH 搜索路径\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# 没有“vpath”搜索路径。" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2164,7 +2361,7 @@ msgstr "" "\n" "# %u “vpath”搜索路径。\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2172,7 +2369,7 @@ msgstr "" "\n" "# 没有通用搜索路径(“VPATH”变量)。" -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2182,37 +2379,71 @@ 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" -#: 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)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver 客户端(信号量 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "释放 jobserver 信号量:(错误 %ld:%s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "信号量或子进程等待:(错误 %ld:%s)" +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "不明输出同步类型“%s”" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "无效的函数名称:%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 bf951d3d229155f148ee822e44342a8381a402b9..783d771a7e9f5c429b2f9ca00af405685ba6aa99 100644 GIT binary patch delta 14264 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 delta 11542 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 KKIMH+5B_h2w!P5+ diff --git a/po/zh_TW.po b/po/zh_TW.po index 768ae37..70da0e7 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.3.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: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-23 07:02+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.1.1\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 -#, 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:1107 msgid "" "\n" "# Directories\n" @@ -141,218 +146,248 @@ msgstr "" "\n" "# 目錄\n" -#: src/dir.c:1085 +#: src/dir.c:1119 #, 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:1122 +#, 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:1126 #, 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:1131 #, 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:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " msgstr "# %s (關鍵字 %s,修改時間 %I64u):" -#: src/dir.c:1131 +#: src/dir.c:1159 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (裝置 %d,i-節點 [%d,%d,%d]):" -#: src/dir.c:1136 +#: src/dir.c:1164 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (裝置 %ld,i-節點 %ld):" -#: src/dir.c:1142 src/dir.c:1163 +#: src/dir.c:1168 src/dir.c:1189 msgid "No" msgstr "無" -#: src/dir.c:1145 src/dir.c:1166 +#: src/dir.c:1171 src/dir.c:1192 msgid " files, " msgstr " 檔案, " -#: src/dir.c:1147 src/dir.c:1168 +#: src/dir.c:1173 src/dir.c:1194 msgid "no" msgstr "無" -#: src/dir.c:1150 +#: src/dir.c:1176 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1154 +#: src/dir.c:1180 msgid " so far." msgstr " 迄今為止。" -#: src/dir.c:1171 +#: src/dir.c:1197 #, 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:272 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "關於檔案「%s」的指令方案在 %s:%lu 處指定," -#: src/file.c:283 +#: src/file.c:277 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "關於檔案「%s」的指令方案透過隱含規則搜尋而找到," -#: src/file.c:287 +#: src/file.c:281 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但「%s」現在被看做「%s」的同一個檔案。" -#: src/file.c:290 +#: src/file.c:284 #, 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:304 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "無法將單冒號「%s」重新命名為雙冒號「%s」" -#: src/file.c:316 +#: src/file.c:310 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "無法將雙冒號「%s」重新命名為單冒號「%s」" -#: src/file.c:408 +#: src/file.c:407 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在刪除中間檔案「%s」" -#: src/file.c:412 +#: src/file.c:411 #, c-format msgid "Removing intermediate files...\n" msgstr "正在刪除中間檔案...\n" -#: src/file.c:872 +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 和 .SECONDARY 互斥" + +#: src/file.c:942 msgid "Current time" msgstr "目前時間" -#: src/file.c:876 +#: src/file.c:946 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:時間標記超出範圍;正在取代 %s" -#: src/file.c:1016 +#: src/file.c:1089 msgid "# Not a target:" msgstr "# 不是一個目標:" -#: src/file.c:1021 +#: src/file.c:1094 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要檔案 (.PRECIOUS 的前提)。" -#: src/file.c:1023 +#: src/file.c:1096 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目標 (.PHONY 的前提)。" -#: src/file.c:1025 +#: src/file.c:1098 msgid "# Command line target." msgstr "# 指令列目標。" -#: src/file.c:1027 +#: src/file.c:1100 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 預設的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1029 +#: src/file.c:1102 msgid "# Builtin rule" msgstr "# 內建規則" -#: src/file.c:1031 +#: src/file.c:1104 msgid "# Implicit rule search has been done." msgstr "# 對隱含規則的搜尋已完成。" -#: src/file.c:1032 +#: src/file.c:1105 msgid "# Implicit rule search has not been done." msgstr "# 對隱含規則的搜尋尚未完成。" -#: src/file.c:1034 +#: src/file.c:1107 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隱含/靜態模式主幹:「%s」\n" -#: src/file.c:1036 +#: src/file.c:1109 msgid "# File is an intermediate prerequisite." msgstr "# 檔案是一個中間前提。" -#: src/file.c:1040 +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 檔案是 .NOTINTERMEDIATE 的前提。" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 檔案是 secondary 的(.SECONDARY 的前提)。" + +#: src/file.c:1117 msgid "# Also makes:" msgstr "# 還要製作:" -#: src/file.c:1046 +#: src/file.c:1123 msgid "# Modification time never checked." msgstr "# 從不檢查修改時間。" -#: src/file.c:1048 +#: src/file.c:1125 msgid "# File does not exist." msgstr "# 檔案不存在。" -#: src/file.c:1050 +#: src/file.c:1127 msgid "# File is very old." msgstr "# 檔案非常陳舊。" -#: src/file.c:1055 +#: src/file.c:1132 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has been updated." msgstr "# 檔案已經被更新。" -#: src/file.c:1058 +#: src/file.c:1135 msgid "# File has not been updated." msgstr "# 檔案尚未被更新。" -#: src/file.c:1062 +#: src/file.c:1139 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在執行的方案 (這是 BUG)。" -#: src/file.c:1065 +#: src/file.c:1142 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在執行的依賴性方案 (這是 BUG)。" -#: src/file.c:1074 +#: src/file.c:1151 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1078 +#: src/file.c:1155 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 設定)。" -#: src/file.c:1081 +#: src/file.c:1158 msgid "# Failed to be updated." msgstr "# 更新失敗。" -#: src/file.c:1086 +#: src/file.c:1163 msgid "# Invalid value in 'command_state' member!" msgstr "# 「command_state」成員中存在無效的值!" -#: src/file.c:1105 +#: src/file.c:1182 msgid "" "\n" "# Files" @@ -360,7 +395,7 @@ msgstr "" "\n" "# 檔案" -#: src/file.c:1109 +#: src/file.c:1186 msgid "" "\n" "# files hash-table stats:\n" @@ -370,125 +405,143 @@ msgstr "" "# 檔案雜湊表狀態:\n" "# " -#: src/file.c:1119 +#: src/file.c:1196 #, 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: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:2343 src/function.c:2373 #, c-format msgid "file: missing filename" msgstr "file:缺少檔案名" -#: src/function.c:2234 src/function.c:2265 +#: src/function.c:2347 src/function.c:2383 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2242 +#: src/function.c:2360 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2245 src/function.c:2282 +#: src/function.c:2363 src/function.c:2402 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2258 +#: src/function.c:2376 #, c-format msgid "file: too many arguments" msgstr "file:太多參數" -#: src/function.c:2277 +#: src/function.c:2397 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2290 +#: src/function.c:2409 #, 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:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" msgstr "函數「%2$s」的參數數量 (%1$d) 不夠" -#: src/function.c:2417 +#: src/function.c:2539 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未實現:函數「%s」" -#: src/function.c:2483 +#: src/function.c:2608 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "對函數「%s」的未終止的呼叫:遺漏「%c」" -#: src/function.c:2667 +#: src/function.c:2791 #, c-format msgid "Empty function name" msgstr "空函數名" -#: src/function.c:2669 +#: src/function.c:2793 #, c-format msgid "Invalid function name: %s" msgstr "無效的函數名稱:%s" -#: src/function.c:2671 +#: src/function.c:2795 #, c-format msgid "Function name too long: %s" msgstr "函數名稱太長:%s" -#: src/function.c:2674 +#: src/function.c:2798 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函數「%2$s」的最少參數數量 (%1$u) 無效" -#: src/function.c:2677 +#: src/function.c:2801 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函數「%2$s」的最多參數數量 (%1$u) 無效" @@ -578,133 +631,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:326 #, 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:451 #, 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:501 #, 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:506 #, 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:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」規則前提不可能發生。\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」隱含前提不可能發生。\n" + +#: src/implicit.c:787 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "嘗試規則前提「%s」。\n" -#: src/implicit.c:733 +#: src/implicit.c:788 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "嘗試隱含前提「%s」。\n" -#: src/implicit.c:772 +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "「%s」應存在。\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "找到「%s」。\n" + +#: src/implicit.c:842 #, c-format -msgid "Found prerequisite '%s' as VPATH '%s'\n" -msgstr "前提「%s」在 VPATH「%s」中發現\n" +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "使用「%s」相容性規則,因為「%s」。\n" -#: src/implicit.c:786 +#: src/implicit.c:856 +#, 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:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "在「%s」VPATH 找到「%s」前提。\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在尋找有明確檔案「%s」的規則。\n" + +#: src/implicit.c:886 #, 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:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "拒絕「%s」規則,因為「%s」前提不可能發生。\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "找不到「%s」。\n" -#: src/job.c:548 +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到「%2$s」的「%1$s」隱含規則。\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在搜尋「%s」的相容性規則。\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找不到關於「%s」的隱含規則。\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "無法建立暫存檔案" + +#: src/job.c:552 msgid " (core dumped)" msgstr " (已傾印核心)" -#: src/job.c:553 +#: src/job.c:557 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:557 src/job.c:1892 +#: src/job.c:561 src/job.c:1900 msgid "" msgstr "<內建>" -#: src/job.c:573 +#: src/job.c:587 #, 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:677 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的作業...." -#: src/job.c:704 +#: src/job.c:719 #, 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:721 src/job.c:916 src/job.c:1084 src/job.c:1652 #, c-format msgid " (remote)" msgstr " (遠端)" -#: src/job.c:898 +#: src/job.c:914 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止獲勝的子程序 %p PID %s %s\n" -#: src/job.c:899 +#: src/job.c:915 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失敗的子程序 %p PID %s %s\n" -#: src/job.c:950 +#: src/job.c:966 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除暫時批次檔 %s\n" -#: src/job.c:956 +#: src/job.c:972 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理暫時批次檔 %s 失敗 (%d)\n" -#: src/job.c:1071 +#: src/job.c:1083 #, 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:1146 #, 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:1583 src/job.c:2497 #, 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:1587 src/job.c:2501 #, c-format msgid "" "\n" @@ -713,86 +826,85 @@ msgstr "" "\n" "失敗執行中共有 %d 個參數。\n" -#: src/job.c:1642 +#: src/job.c:1650 #, 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:1883 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "取得至處理程序 %p (%s) 的標記。\n" -#: src/job.c:1902 -#, c-format -msgid "%s: target '%s' does not exist" -msgstr "%s: 目標檔案「%s」不存在" - -#: src/job.c:1905 +#: src/job.c:1909 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s:更新「%s」,因為:%s" -#: src/job.c:2108 +#: src/job.c:1910 +msgid "target does not exist" +msgstr "目標不存在" + +#: src/job.c:2104 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "無法在本作業系統中實施負載限制" -#: src/job.c:2110 +#: src/job.c:2106 msgid "cannot enforce load limit: " msgstr "無法實施負載限制:" -#: src/job.c:2200 +#: src/job.c:2195 #, 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:2207 #, 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:2221 #, 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:2236 #, c-format -msgid "Could not restore stdin\n" -msgstr "無法還原標準輸入\n" +msgid "Could not restore stdin" +msgstr "無法還原 stdin" -#: src/job.c:2249 +#: src/job.c:2244 #, c-format -msgid "Could not restore stdout\n" -msgstr "無法還原標準輸出\n" +msgid "Could not restore stdout" +msgstr "無法還原 stdout" -#: src/job.c:2257 +#: src/job.c:2252 #, c-format -msgid "Could not restore stderr\n" -msgstr "無法還原標準錯誤\n" +msgid "Could not restore stderr" +msgstr "無法還原 stderr" -#: src/job.c:2520 +#: src/job.c:2530 #, 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:2630 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 環境變數空間可能會耗盡" -#: src/job.c:2862 +#: src/job.c:2869 #, 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:3306 src/job.c:3510 #, c-format msgid "Creating temporary batch file %s\n" msgstr "正在建立暫時批檔案 %s\n" -#: src/job.c:3308 +#: src/job.c:3314 #, c-format msgid "" "Batch file contents:\n" @@ -801,7 +913,7 @@ msgstr "" "批次檔內容:\n" "\t@echo off\n" -#: src/job.c:3497 +#: src/job.c:3522 #, c-format msgid "" "Batch file contents:%s\n" @@ -810,7 +922,7 @@ msgstr "" "批次檔內容:%s\n" "\t%s\n" -#: src/job.c:3605 +#: src/job.c:3630 #, 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 +932,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:317 msgid "Options:\n" msgstr "選項:\n" -#: src/main.c:336 +#: src/main.c:318 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 為相容性而忽略。\n" -#: src/main.c:338 +#: src/main.c:320 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無條件製作 (make) 所有目標。\n" -#: src/main.c:340 +#: src/main.c:322 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目錄, --directory=目錄 在執行前先切換到 <目錄>。\n" -#: src/main.c:343 +#: src/main.c:325 msgid " -d Print lots of debugging information.\n" msgstr " -d 輸出大量除錯訊息。\n" -#: src/main.c:345 +#: src/main.c:327 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗標] 輸出各種除錯訊息。\n" -#: src/main.c:347 +#: src/main.c:329 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -880,12 +1002,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境變數覆蓋 makefile 中的變數。\n" -#: src/main.c:350 +#: src/main.c:332 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 將 <字串> 作為 makefile 語句估值。\n" -#: src/main.c:352 +#: src/main.c:334 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -893,33 +1015,37 @@ msgstr "" " -f 檔案, --file=檔案, --makefile=檔案\n" " 從 <檔案> 中讀入 makefile。\n" -#: src/main.c:355 +#: src/main.c:337 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 輸出該訊息並離開。\n" -#: src/main.c:357 +#: src/main.c:339 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n" -#: src/main.c:359 +#: src/main.c:341 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:344 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:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE 選擇 jobserver 要使用的風格。\n" + +#: src/main.c:348 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:350 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -928,7 +1054,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系統負載高於 N 時不啟動多作業。\n" -#: src/main.c:369 +#: src/main.c:353 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -936,7 +1062,7 @@ msgstr "" " -L, --check-symlink-times 使用符號連結及符號連結目標中修改時間較晚的一" "個。\n" -#: src/main.c:371 +#: src/main.c:355 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -945,7 +1071,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只輸出指令方案,不實際執行。\n" -#: src/main.c:374 +#: src/main.c:358 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -954,7 +1080,7 @@ msgstr "" " -o 檔案, --old-file=檔案, --assume-old=檔案\n" " 將 <檔案> 當做很舊,不必重新製作。\n" -#: src/main.c:377 +#: src/main.c:361 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -962,34 +1088,45 @@ msgstr "" " -O[類型], --output-sync[=類型]\n" " 使用 <類型> 方式同步並行作業輸出。\n" -#: src/main.c:380 +#: src/main.c:364 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:366 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:368 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:370 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:372 +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:375 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不輸出方案指令。\n" -#: src/main.c:390 +#: src/main.c:377 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 對方案進行回顯(停用 --silent 模式)。\n" -#: src/main.c:392 +#: src/main.c:379 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -997,32 +1134,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 關閉 -k。\n" -#: src/main.c:395 +#: src/main.c:382 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目標(更新修改時間)而不是重新製作它" "們。\n" -#: src/main.c:397 +#: src/main.c:384 msgid " --trace Print tracing information.\n" msgstr " --trace 輸出跟蹤訊息。\n" -#: src/main.c:399 +#: src/main.c:386 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 輸出 make 的版本號並離開。\n" -#: src/main.c:401 +#: src/main.c:388 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 輸出目前目錄。\n" -#: src/main.c:403 +#: src/main.c:390 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:392 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1030,33 +1167,66 @@ msgstr "" " -W 檔案, --what-if=檔案, --new-file=檔案, --assume-new=檔案\n" " 將 <檔案> 當做最新。\n" -#: src/main.c:408 +#: src/main.c:395 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n" -#: src/main.c:671 +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "寫錯誤: 標準輸出" + +#: src/main.c:742 #, c-format msgid "empty string invalid as file name" msgstr "空字串是無效的檔案名" -#: src/main.c:754 +#: src/main.c:834 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的除錯級別定義「%s」" -#: src/main.c:794 +#: src/main.c:874 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明輸出同步類型「%s」" -#: src/main.c:849 +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [選項] [目標] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"該程式為 %s 編譯\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"該程式為 %s (%s) 編譯\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "報告錯誤到 \n" + +#: src/main.c:940 #, 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:947 #, c-format msgid "" "\n" @@ -1071,196 +1241,190 @@ msgstr "" "異常標誌 = %lx\n" "異常位址 = 0x%p\n" -#: src/main.c:864 +#: src/main.c:955 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "存取衝突:位址 0x%p 處的寫入動作\n" -#: src/main.c:865 +#: src/main.c:956 #, 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:1028 src/main.c:1042 #, 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:1098 #, 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:1151 +msgid "unlink (temporary file): " +msgstr "刪除 (暫存檔):" + +#: src/main.c:1833 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加「+」到父 make 的規則。" -#: src/main.c:1617 +#: src/main.c:1841 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:1781 +#: src/main.c:1930 #, 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 (暫存檔)" +msgid "Makefile from standard input specified twice" +msgstr "指定了兩次源自標準輸入的 Makefile" -#: src/main.c:1825 -msgid "fwrite (temporary file)" -msgstr "fwrite (暫存檔)" +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" -#: src/main.c:2004 +#: src/main.c:2095 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:2068 +#: src/main.c:2191 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支援並行作業 (-j)。" -#: src/main.c:2069 +#: src/main.c:2192 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重設為單作業模式 (-j1)。" -#: src/main.c:2109 +#: src/main.c:2248 +#, fuzzy, c-format +msgid "Using jobserver controller %s\n" +msgstr "jobserver 認證風格 “%s” 未知" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "無效的輸出同步鎖 (mutex):%s" + +#: src/main.c:2255 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支援符號連結:停用 -L。" -#: src/main.c:2190 +#: src/main.c:2327 +#, fuzzy, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "無效的重新排序模式:%s:「%s」" + +#: src/main.c:2339 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2226 +#: src/main.c:2397 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile「%s」可能循環;不會重新執行它。\n" -#: src/main.c:2303 +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 載入失敗" + +#: src/main.c:2528 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新執行 makefile「%s」失敗。" -#: src/main.c:2323 +#: src/main.c:2548 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile「%s」。" -#: src/main.c:2328 +#: src/main.c:2552 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile「%s」" -#: src/main.c:2394 +#: src/main.c:2700 #, 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:2708 #, c-format msgid "Re-executing[%u]:" msgstr "重新執行[%u]:" -#: src/main.c:2522 -msgid "unlink (temporary file): " -msgstr "刪除 (暫存檔):" - -#: src/main.c:2555 +#: src/main.c:2863 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多餘一個目標" -#: src/main.c:2579 +#: src/main.c:2887 #, c-format msgid "No targets" msgstr "無目標" -#: src/main.c:2581 +#: src/main.c:2889 #, c-format msgid "No targets specified and no makefile found" msgstr "沒有指明目標並且找不到 makefile" -#: src/main.c:2586 +#: src/main.c:2898 #, c-format msgid "Updating goal targets....\n" msgstr "更新目標....\n" -#: src/main.c:2610 +#: src/main.c:2922 #, 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:3186 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "「%s%s」選項需要非空字串參數" -#: src/main.c:2965 +#: src/main.c:3267 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "「-%c」選項需要正整數參數" -#: src/main.c:3363 +#: src/main.c:3652 #, c-format msgid "%sBuilt for %s\n" msgstr "%s為 %s 編譯\n" -#: src/main.c:3365 +#: src/main.c:3654 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s為 %s (%s) 編譯\n" -#: src/main.c:3376 +#: src/main.c:3665 #, 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:3682 #, c-format msgid "" "\n" @@ -1269,7 +1433,7 @@ msgstr "" "\n" "# make 資料基礎,輸出在 %s" -#: src/main.c:3407 +#: src/main.c:3692 #, c-format msgid "" "\n" @@ -1278,527 +1442,551 @@ msgstr "" "\n" "# 在 %s 上完成 make 資料基礎\n" -#: src/misc.c:643 +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 #, 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:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "使用「%s」的預設方案。\n" -#: src/misc.c:743 -msgid "User access" -msgstr "使用者權限" +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" -#: src/misc.c:791 -msgid "Make access" -msgstr "Make 權限" +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "刪除 (暫存檔):" -#: src/misc.c:825 -msgid "Child access" -msgstr "子程序 權限" +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen:暫存檔 %s:%s" -#: src/output.c:97 +#: src/misc.c:747 +#, 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:280 #, c-format -msgid "write error: stdout" -msgstr "寫錯誤: 標準輸出" +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告:無法索取輸出鎖,停用輸出同步。" -#: src/output.c:624 +#: src/output.c:475 msgid ". Stop.\n" msgstr "。 停止。\n" -#: src/output.c:658 +#: src/output.c:510 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/output.c:667 +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 #, 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:186 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:190 msgid "creating jobs pipe" msgstr "正在建立作業管道" -#: src/posixos.c:98 src/posixos.c:251 +#: src/posixos.c:201 src/posixos.c:434 msgid "duping jobs pipe" msgstr "正在複製作業管道" -#: src/posixos.c:104 +#: src/posixos.c:207 msgid "init jobserver pipe" msgstr "創始化作業伺服器管道" -#: src/posixos.c:119 +#: src/posixos.c:261 #, 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 客戶端(檔案描述符 %d,%d)\n" - -#: src/posixos.c:138 -msgid "jobserver pipeline" -msgstr "作業伺服器管道" - -#: src/posixos.c:186 +#: src/posixos.c:363 msgid "write jobserver" msgstr "寫入作業伺服器" -#: src/posixos.c:300 +#: src/posixos.c:483 #, c-format msgid "job server shut down" msgstr "作業伺服器關閉" # , fuzzy -#: src/posixos.c:303 +#: src/posixos.c:486 msgid "pselect jobs pipe" msgstr "pselect 作業管道" -#: src/posixos.c:319 src/posixos.c:433 +#: src/posixos.c:502 src/posixos.c:616 msgid "read jobs pipe" msgstr "讀取作業管道" -#: src/read.c:181 +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "--sync-mutex 字串「%s」無效" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "無法開啟輸出同步鎖 (mutex) %s:%s" + +#: src/posixos.c:855 +#, 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:330 #, c-format msgid "Reading makefile '%s'" msgstr "正在讀入 makefile「%s」" -#: src/read.c:338 +#: src/read.c:332 #, c-format msgid " (no default goal)" msgstr " (沒有預設目標)" -#: src/read.c:340 +#: src/read.c:334 #, c-format msgid " (search path)" msgstr " (搜尋路徑)" -#: src/read.c:342 +#: src/read.c:336 #, c-format msgid " (don't care)" msgstr " (不用理)" -#: src/read.c:344 +#: src/read.c:338 #, c-format msgid " (no ~ expansion)" msgstr " (沒有 ~ 展開)" -#: src/read.c:655 +#: src/read.c:663 #, 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:666 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "跳過 Makefile 緩衝區中的 UTF-8 BOM\n" -#: src/read.c:787 +#: src/read.c:795 #, 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:1002 #, c-format msgid "recipe commences before first target" msgstr "方案在第一個目標前開始" -#: src/read.c:1035 +#: src/read.c:1053 #, c-format msgid "missing rule before recipe" msgstr "方案之前遺漏了規則" -#: src/read.c:1136 +#: src/read.c:1154 #, 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" msgstr "缺少分隔符" -#: src/read.c:1283 +#: src/read.c:1300 #, c-format msgid "missing target pattern" msgstr "無目標符合" -#: src/read.c:1285 +#: src/read.c:1302 #, c-format msgid "multiple target patterns" msgstr "多個目標符合" -#: src/read.c:1289 +#: src/read.c:1306 #, c-format msgid "target pattern contains no '%%'" msgstr "目標模式不含有「%%」" -#: src/read.c:1404 +#: src/read.c:1349 #, c-format msgid "missing 'endif'" msgstr "遺漏「endif」" -#: src/read.c:1443 src/read.c:1488 src/variable.c:1600 +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 #, c-format msgid "empty variable name" msgstr "空變數名" -#: src/read.c:1478 +#: src/read.c:1423 #, c-format msgid "extraneous text after 'define' directive" msgstr "「endef」指令後含有不該出現的文字" -#: src/read.c:1503 +#: src/read.c:1448 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "遺漏「endef」,未終止的「define」" -#: src/read.c:1531 +#: src/read.c:1476 #, c-format msgid "extraneous text after 'endef' directive" msgstr "「endef」指令後含有不該出現的文字" -#: src/read.c:1603 +#: src/read.c:1548 #, c-format msgid "extraneous text after '%s' directive" msgstr "在「%s」指令之後含有不該出現的文字" -#: src/read.c:1604 +#: src/read.c:1549 #, c-format msgid "extraneous '%s'" msgstr "不該出現的「%s」" -#: src/read.c:1632 +#: src/read.c:1577 #, c-format msgid "only one 'else' per conditional" msgstr "每個條件只能有一個「else」" -#: src/read.c:1908 +#: src/read.c:1853 #, c-format msgid "Malformed target-specific variable definition" msgstr "針對目標的純量定義格式錯誤" -#: src/read.c:1968 +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT 不應有前提" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT 不應有命令" + +#: src/read.c:2039 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "依賴無法在方案腳本中定義" -#: src/read.c:1986 +#: src/read.c:2057 #, c-format msgid "grouped targets must provide a recipe" msgstr "成組的目標必須提供一個方案" -#: src/read.c:2029 +#: src/read.c:2100 #, c-format msgid "mixed implicit and static pattern rules" msgstr "混合的隱含和靜態模式規則" -#: src/read.c:2052 +#: src/read.c:2123 #, c-format msgid "mixed implicit and normal rules" msgstr "混合的隱含和普通規則" -#: src/read.c:2107 +#: src/read.c:2155 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "目標「%s」不符合目標模式" -#: src/read.c:2122 src/read.c:2168 +#: src/read.c:2170 src/read.c:2221 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "目標檔案「%s」含有 : 和 :: 兩種條目" -#: src/read.c:2128 +#: src/read.c:2176 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "目標「%s」在同一個規則中給出了多次" -#: src/read.c:2138 +#: src/read.c:2186 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "警告:覆蓋關於目標「%s」的方案" -#: src/read.c:2141 +#: src/read.c:2189 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "警告:忽略關於目標「%s」的舊方案" -#: src/read.c:2254 +#: src/read.c:2308 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** 隱含和普通規則混合:已棄用的語法" -#: src/read.c:2271 +#: src/read.c:2325 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "警告:覆蓋關於目標「%s」的組成員" -#: src/read.c:2636 +#: src/read.c:2683 #, 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:254 #, c-format msgid "Nothing to be done for '%s'." msgstr "對「%s」無需做任何事。" -#: src/remake.c:227 +#: src/remake.c:255 #, c-format msgid "'%s' is up to date." msgstr "「%s」已是最新。" -#: src/remake.c:323 +#: src/remake.c:350 #, c-format msgid "Pruning file '%s'.\n" msgstr "正刪除檔案「%s」。\n" -#: src/remake.c:389 +#: src/remake.c:416 #, 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:426 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%s沒有規則可製作目標「%s」%s" -#: src/remake.c:425 +#: src/remake.c:452 #, c-format msgid "Considering target file '%s'.\n" msgstr "正在考慮目標檔案「%s」。\n" -#: src/remake.c:432 +#: src/remake.c:459 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "最近已嘗試過更新檔案「%s」並失敗。\n" -#: src/remake.c:444 +#: src/remake.c:471 #, c-format msgid "File '%s' was considered already.\n" msgstr "已考慮過檔案「%s」。\n" -#: src/remake.c:454 +#: src/remake.c:481 #, c-format msgid "Still updating file '%s'.\n" msgstr "仍然在更新檔案「%s」。\n" -#: src/remake.c:457 +#: src/remake.c:484 #, c-format msgid "Finished updating file '%s'.\n" msgstr "更新檔案「%s」完成。\n" -#: src/remake.c:486 +#: src/remake.c:513 #, c-format msgid "File '%s' does not exist.\n" msgstr "檔案「%s」不存在。\n" -#: src/remake.c:494 +#: src/remake.c:520 #, 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:538 #, 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:558 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "使用「%s」的預設方案。\n" -#: src/remake.c:549 src/remake.c:1088 +#: src/remake.c:603 src/remake.c:1165 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "放棄循環依賴 %s <- %s 。" -#: src/remake.c:674 +#: src/remake.c:737 #, c-format msgid "Finished prerequisites of target file '%s'.\n" msgstr "目標檔案「%s」的前提已完成。\n" -#: src/remake.c:680 +#: src/remake.c:743 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "正在製作「%s」的前提。\n" -#: src/remake.c:694 +#: src/remake.c:757 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "放棄目標檔案「%s」。\n" -#: src/remake.c:699 +#: src/remake.c:762 #, c-format msgid "Target '%s' not remade because of errors." msgstr "由於錯誤目標「%s」並未重新製作。" -#: src/remake.c:751 +#: src/remake.c:814 #, 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:819 #, 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:824 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "前提「%s」比目標「%s」新。\n" -#: src/remake.c:764 +#: src/remake.c:827 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "前提「%s」比目標「%s」舊。\n" -#: src/remake.c:782 +#: src/remake.c:845 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "目標「%s」是雙冒號目標並且沒有前提。\n" -#: src/remake.c:789 +#: src/remake.c:852 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "沒有關於「%s」的方案,並且沒有實際改變的前提。\n" -#: src/remake.c:794 +#: src/remake.c:857 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "由於 always-make 標誌所以製作「%s」。\n" -#: src/remake.c:802 +#: src/remake.c:865 #, c-format msgid "No need to remake target '%s'" msgstr "不需要重新製作目標「%s」" -#: src/remake.c:804 +#: src/remake.c:867 #, c-format msgid "; using VPATH name '%s'" msgstr ";使用 VPATH 名稱「%s」" -#: src/remake.c:824 +#: src/remake.c:891 #, c-format msgid "Must remake target '%s'.\n" msgstr "必須重新製作目標「%s」。\n" -#: src/remake.c:830 +#: src/remake.c:897 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " 忽略 VPATH 名稱「%s」。\n" -#: src/remake.c:839 +#: src/remake.c:906 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "「%s」的指令方案正在被執行。\n" -#: src/remake.c:846 +#: src/remake.c:913 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "重新製作目標檔案「%s」失敗。\n" -#: src/remake.c:849 +#: src/remake.c:916 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "重新製作目標檔案「%s」成功。\n" -#: src/remake.c:852 +#: src/remake.c:919 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "目標檔案「%s」需要以 -q 選項重新製作。\n" -#: src/remake.c:1047 +#: src/remake.c:1118 #, c-format msgid "Using default commands for '%s'.\n" msgstr "使用關於「%s」的預設指令。\n" -#: src/remake.c:1422 +#: src/remake.c:1499 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "警告:檔案「%s」的修改時間在未來 %s 秒後" -#: src/remake.c:1662 +#: src/remake.c:1747 #, 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 +1994,7 @@ msgstr "" "\n" "# 隱含規則" -#: src/rule.c:545 +#: src/rule.c:607 msgid "" "\n" "# No implicit rules." @@ -1814,7 +2002,7 @@ msgstr "" "\n" "# 沒有隱含規則。" -#: src/rule.c:548 +#: src/rule.c:610 #, c-format msgid "" "\n" @@ -1823,11 +2011,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 +2231,44 @@ msgstr "" "# 雜湊表統計資料:\n" "# " -#: src/variable.c:1653 +#: src/variable.c:1786 msgid "automatic" msgstr "自動" -#: src/variable.c:1656 +#: src/variable.c:1789 msgid "default" msgstr "預設" -#: src/variable.c:1659 +#: src/variable.c:1792 msgid "environment" msgstr "環境" -#: src/variable.c:1662 +#: src/variable.c:1795 msgid "makefile" msgstr "makefile" -#: src/variable.c:1665 +#: src/variable.c:1798 msgid "environment under -e" msgstr "-e 指定的環境變數" -#: src/variable.c:1668 +#: src/variable.c:1801 msgid "command line" msgstr "指令列" -#: src/variable.c:1671 +#: src/variable.c:1804 msgid "'override' directive" msgstr "「override」指令" -#: src/variable.c:1682 +#: src/variable.c:1814 #, c-format msgid " (from '%s', line %lu)" msgstr " (從「%s」,行 %lu)" -#: src/variable.c:1745 +#: src/variable.c:1877 msgid "# variable set hash-table stats:\n" msgstr "# 變數的雜湊表狀態:\n" -#: src/variable.c:1756 +#: src/variable.c:1888 msgid "" "\n" "# Variables\n" @@ -2083,7 +2276,7 @@ msgstr "" "\n" "# 變數\n" -#: src/variable.c:1760 +#: src/variable.c:1892 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2091,7 +2284,7 @@ msgstr "" "\n" "# Pattern-specific 變數值" -#: src/variable.c:1774 +#: src/variable.c:1906 msgid "" "\n" "# No pattern-specific variable values." @@ -2099,7 +2292,7 @@ msgstr "" "\n" "# 沒有 pattern-specific 變數的值。" -#: src/variable.c:1776 +#: src/variable.c:1908 #, c-format msgid "" "\n" @@ -2108,7 +2301,7 @@ msgstr "" "\n" "# %u 個 pattern-specific 變數的值" -#: src/variable.h:229 +#: src/variable.h:237 #, c-format msgid "warning: undefined variable '%.*s'" msgstr "警告:未定義的變數「%.*s」" @@ -2133,22 +2326,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:600 msgid "" "\n" "# VPATH Search Paths\n" @@ -2156,11 +2349,11 @@ msgstr "" "\n" "# VPATH 搜尋路徑\n" -#: src/vpath.c:620 +#: src/vpath.c:617 msgid "# No 'vpath' search paths." msgstr "# 沒有「vpath」搜尋路徑。" -#: src/vpath.c:622 +#: src/vpath.c:619 #, c-format msgid "" "\n" @@ -2169,7 +2362,7 @@ msgstr "" "\n" "# %u「vpath」搜尋路徑。\n" -#: src/vpath.c:625 +#: src/vpath.c:622 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2177,7 +2370,7 @@ msgstr "" "\n" "# 沒有通用搜尋路徑(「VPATH」變數)。" -#: src/vpath.c:631 +#: src/vpath.c:628 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2187,36 +2380,79 @@ 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" -#: 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)" -#: src/w32/w32os.c:82 +#: src/w32/w32os.c:262 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Jobserver 客戶端(訊號量 %s)\n" -#: src/w32/w32os.c:123 +#: src/w32/w32os.c:310 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "釋放 jobserver 訊號量:(錯誤 %ld:%s)" -#: src/w32/w32os.c:194 +#: src/w32/w32os.c:381 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "訊號量或子程序等待:(錯誤 %ld:%s)" +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "無法解析輸出同步鎖 (mutex) %s:%s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "無效的輸出同步鎖 (mutex):%s" + +#~ 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..2304716 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-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 @@ -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..bef5087 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-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 @@ -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..7b607dc 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-2022 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..b6ed45a 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-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 @@ -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; @@ -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..9bb4eb6 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-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 @@ -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..1a71751 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-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 @@ -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..775a4d7 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-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 @@ -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,12 +170,6 @@ 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" @@ -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. */ diff --git a/src/config.h-vms b/src/config.h-vms index e2284a3..53e6b90 100644 --- a/src/config.h-vms +++ b/src/config.h-vms @@ -1,6 +1,6 @@ /* config.h-vms. Generated by hand by Klaus Kämpf -*-C-*- -Copyright (C) 1996-2020 Free Software Foundation, Inc. +Copyright (C) 1996-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 @@ -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,12 +207,6 @@ 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 */ @@ -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 */ diff --git a/src/config.h.W32 b/src/config.h.W32 index be2a33e..1a03a04 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-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 @@ -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,15 @@ 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 `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 +358,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 +376,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 +396,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,12 +419,33 @@ 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" @@ -381,38 +468,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 +497,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 +504,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 +542,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 +571,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 +590,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. diff --git a/src/config.h.in b/src/config.h.in index 4757a50..7085a40 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. */ @@ -245,21 +177,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 +188,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 +196,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 +205,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 +217,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 +226,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 +241,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 +274,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 +325,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,18 +349,12 @@ /* 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 @@ -465,6 +364,9 @@ /* 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 +386,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 +413,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 +429,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 +445,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 +478,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,33 +493,15 @@ /* 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 - /* Build host information. */ #undef MAKE_HOST @@ -642,11 +514,8 @@ /* 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 +544,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 +561,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 +590,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 @@ -791,37 +663,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 +691,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 for large files, on AIX-style hosts. */ +#undef _LARGE_FILES /* The _Noreturn keyword of C11. */ #ifndef _Noreturn @@ -868,10 +723,14 @@ this syntax with 'extern'. */ # define _Noreturn [[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 +740,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 a timestamp, 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 +/* For 64-bit time_t on 32-bit mingw. */ +#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 +773,390 @@ #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 + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#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__)) -# else -# define _GL_INLINE extern inline -# endif -# define _GL_EXTERN_INLINE extern -# define _GL_EXTERN_INLINE_IN_USE +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#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. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#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. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) #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 +# define _GL_ATTRIBUTE_ARTIFICIAL +#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__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) # else -# define _GL_INLINE_HEADER_CONST_PRAGMA \ - _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) # 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 +# define _GL_ATTRIBUTE_COLD +#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. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#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. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#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 +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#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. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#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 _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 + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#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. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#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. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#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. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC #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. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#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 C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#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. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#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. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#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'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#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. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#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. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#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. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#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. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#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 +1167,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 +1206,5 @@ 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 - -/* The __malloc__ attribute was added in gcc 3. */ -#if 3 <= __GNUC__ -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC /* empty */ -#endif - - /* Define as `fork' if `vfork' does not work. */ #undef vfork diff --git a/src/configh.dos b/src/configh.dos index 38c8bde..5e20616 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-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 @@ -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,30 @@ 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 diff --git a/src/debug.h b/src/debug.h index 514b7e8..63cc4b5 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-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 @@ -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..b4cfdf7 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-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 @@ -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,7 +518,12 @@ 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", @@ -636,7 +641,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 +668,7 @@ static const char *default_variables[] = #endif /* !VMS */ /* Make this assignment to avoid undefined variable warnings. */ - "GNUMAKEFLAGS", "", + GNUMAKEFLAGS_NAME, "", 0, 0 }; diff --git a/src/dep.h b/src/dep.h index 76718f0..89c8639 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-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 @@ -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..b47e94f 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-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 @@ -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 @@ -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); @@ -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,25 @@ 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 = 0; + } + hash_free (&dc->dirfiles, 1); + + return NULL; +} + static unsigned long directory_contents_hash_1 (const void *key_0) { @@ -363,7 +386,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 +418,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. */ @@ -449,150 +468,162 @@ 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 == 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); } } @@ -834,7 +865,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); @@ -910,7 +941,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); @@ -1008,7 +1039,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); @@ -1069,6 +1100,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")); @@ -1084,24 +1118,19 @@ print_dir_data_base (void) if (dir->contents == 0) printf (_("# %s: could not be stat'd.\n"), dir->name); else if (dir->contents->dirfiles.ht_vec == 0) - { #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 +1152,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 @@ -1286,13 +1312,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..2509009 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-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 @@ -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..226af61 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-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 @@ -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 @@ -62,6 +63,9 @@ static struct hash_table files; /* Whether or not .SECONDARY with no prerequisites was given. */ static int all_secondary = 0; +/* Whether or not .NOTINTERMEDIATE with no prerequisites was given. */ +static int no_intermediates = 0; + /* Access the hash table of all file records. lookup_file given a name, return the struct file * for that name, or nil if there is none. @@ -104,20 +108,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 +264,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 +282,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 +321,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; @@ -386,7 +385,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 +423,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 +445,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 +454,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 +488,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 +507,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 +527,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 +548,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 +580,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 +589,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 +640,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 +721,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 +763,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 +777,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 +800,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 connot 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 +835,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 +877,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 +1008,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 +1043,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 +1107,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 +1258,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..ae2f26d 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-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 @@ -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..f0ef343 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-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 @@ -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; - *pattail = pat; - pattail = &pat->next; + /* Find the number of patterns and get memory for them. */ + cp = argv[0]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++pat_count; - if (*pat_iterator != '\0') - ++pat_iterator; + patterns = xcalloc (pat_count * sizeof (struct a_pattern)); + pat_end = patterns + pat_count; + + /* 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); @@ -1220,6 +1262,115 @@ func_sort (char *o, char **argv, const char *funcname UNUSED) } /* + 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]) CONDITION is false iff it evaluates to an empty string. White @@ -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'; @@ -2233,6 +2346,11 @@ func_file (char *o, char **argv, const char *funcname UNUSED) if (fp == NULL) OSS (fatal, reading_file, _("open: %s: %s"), fn, 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]) { size_t l = strlen (argv[1]); @@ -2246,7 +2364,7 @@ func_file (char *o, char **argv, const char *funcname UNUSED) } else if (fn[0] == '<') { - char *preo = o; + size_t n = 0; FILE *fp; ++fn; @@ -2270,8 +2388,10 @@ 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)); @@ -2282,9 +2402,8 @@ func_file (char *o, char **argv, const char *funcname UNUSED) OSS (fatal, reading_file, _("close: %s: %s"), fn, 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 +2456,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 +2493,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 +2517,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 +2538,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 +2573,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 +2644,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 +2685,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 +2738,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 +2751,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); } @@ -2683,9 +2807,12 @@ define_new_function (const floc *flocp, const char *name, 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..9f31a70 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-2022 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 . */ diff --git a/src/getopt.h b/src/getopt.h index abfc31e..f96172d 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-2022 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..481a358 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-2022 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..9498fad 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-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 @@ -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..033a32e 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. +;; Copyright (C) 2011-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 @@ -13,7 +13,7 @@ ;; 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 diff --git a/src/gnumake.h b/src/gnumake.h index fe0f7f3..4e796e5 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-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 @@ -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_ diff --git a/src/guile.c b/src/guile.c index 52f0e5c..32f6317 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-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 @@ -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/hash.c b/src/hash.c index 004097d..5d7ea81 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++) { 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..a3bd318 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-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 @@ -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; @@ -308,7 +322,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 +447,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 +497,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 +509,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 +527,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 +541,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 +554,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 +600,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 +630,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 +713,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 +722,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 +753,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 +765,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 +779,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 +867,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 +875,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) @@ -794,7 +894,8 @@ pattern_search (struct file *file, int archive, if (pattern_search (int_file, 0, depth + 1, - recursions + 1)) + recursions + 1, + allow_compat_rules)) { pat->pattern = int_file->name; int_file->name = d->name; @@ -811,11 +912,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 +941,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 +992,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; + f->intermediate |= !f->is_explicit && !f->notintermediate; f->tried_implicit = 1; imf = lookup_file (pat->pattern); @@ -916,7 +1026,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 +1054,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 +1083,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) + file->notintermediate = 1; + } } /* If this rule builds other targets, too, put the others into FILE's @@ -985,11 +1108,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 +1119,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) + 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 +1139,21 @@ pattern_search (struct file *file, int archive, free (tryrules); free (deplist); - return rule != 0; + 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..b78f279 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-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 @@ -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,11 +25,13 @@ 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 */ +# include /* for strcasecmp, strncasecmp */ # endif # include @@ -121,6 +123,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 +204,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 +228,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 +282,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 +377,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 +415,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 +439,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, '\\'); - - 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; + /* find the last directory separator, or the beginning of the string. */ + const char *cp = path + strlen (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 +507,7 @@ block_sigs () static void unblock_sigs () { - sigsetmask (siggetmask (0) & ~fatal_signal_mask) + sigsetmask (siggetmask () & ~fatal_signal_mask); } void @@ -539,6 +542,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 +568,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 +610,7 @@ child_error (struct child *child, static unsigned int dead_children = 0; -RETSIGTYPE +void child_handler (int sig UNUSED) { ++dead_children; @@ -721,9 +736,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 +791,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; @@ -876,6 +889,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 +937,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 +1023,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 +1057,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 +1114,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 +1160,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); } @@ -1332,15 +1351,13 @@ start_job_command (struct child *child) 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 + if (just_print_flag || ISDB (DB_PRINT) || (!(flags & COMMANDS_SILENT) && !run_silent)) OS (message, 0, "%s", p); @@ -1408,7 +1425,7 @@ start_job_command (struct child *child) #ifndef _AMIGA /* Set up the environment for the child. */ if (child->environment == 0) - child->environment = target_environment (child->file); + child->environment = target_environment (child->file, child->recursive); #endif #if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) @@ -1440,9 +1457,6 @@ start_job_command (struct child *child) #endif /* !VMS */ { /* Fork the child process. */ - - char **parent_environ; - run_local: block_sigs (); @@ -1453,14 +1467,11 @@ start_job_command (struct child *child) #else - parent_environ = environ; - jobserver_pre_child (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); #endif /* !VMS */ @@ -1483,7 +1494,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 +1509,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 +1549,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 +1562,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 +1570,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 +1872,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,7 +1891,7 @@ 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; @@ -1897,12 +1905,9 @@ new_job (struct file *file) nm = n; } - if (newer[0] == '\0') - OSS (message, 0, - _("%s: target '%s' does not exist"), nm, c->file->name); - else - OSSS (message, 0, - _("%s: update target '%s' due to: %s"), nm, c->file->name, newer); + OSSS (message, 0, + _("%s: update target '%s' due to: %s"), nm, c->file->name, + newer[0] == '\0' ? _("target does not exist") : newer); free (newer); } @@ -1950,12 +1955,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 +2014,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 +2072,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 +2091,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 +2108,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 +2192,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 +2204,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 +2218,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 +2233,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 +2241,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 +2249,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 +2271,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 +2291,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 +2322,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 +2364,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 +2384,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 +2466,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 @@ -2523,17 +2533,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. */ @@ -2546,7 +2551,9 @@ exec_command (char **argv, char **envp) errno = ENOEXEC; # 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); @@ -2629,11 +2636,7 @@ exec_command (char **argv, char **envp) break; } -# ifdef __EMX__ return pid; -# else - _exit (127); -# endif #endif /* !WINDOWS32 */ #endif /* !VMS */ } @@ -2656,8 +2659,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 +2668,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 +2761,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. */ @@ -3039,8 +3046,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; @@ -3358,25 +3364,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 +3422,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 +3470,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,7 +3486,7 @@ 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)) { @@ -3669,8 +3694,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); diff --git a/src/job.h b/src/job.h index ee290fb..14a9984 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-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 @@ -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..e343a2e 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-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 @@ -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..3c1fdb0 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-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 @@ -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..eec9365 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-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 @@ -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 @@ -34,7 +35,7 @@ this program. If not, see . */ # include # include #ifdef HAVE_STRINGS_H -# include /* for strcasecmp */ +# include /* for strcasecmp */ #endif # include "pathstuff.h" # include "sub_proc.h" @@ -105,42 +106,11 @@ 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 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) @@ -227,12 +197,9 @@ 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; +int print_directory; +static int print_directory_flag = -1; +static const int default_print_directory_flag = -1; /* Nonzero means print version information. */ @@ -265,12 +232,18 @@ static const int inf_jobs = 0; /* Authorization for the jobserver. */ -static char *jobserver_auth = NULL; +char *jobserver_auth = NULL; -/* Handle for the mutex used on Windows to synchronize output of our - children under -O. */ +/* Style for the jobserver. */ +static char *jobserver_style = NULL; -char *sync_mutex = NULL; +/* Shuffle mode for goals and prerequisites. */ + +static char *shuffle_mode = 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,15 @@ struct variable shell_var; char cmd_prefix = '\t'; +/* 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 +344,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 +370,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,10 +397,46 @@ 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. */ + + 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. */ + }; + /* 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. */ +#define TEMP_STDIN_OPT (CHAR_MAX+10) + static const struct command_switch switches[] = { { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 }, @@ -437,13 +460,14 @@ static const struct command_switch switches[] = { '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" }, + { 'v', flag, &print_version_flag, 1, 0, 0, 0, 0, "version" }, + { 'w', flag, &print_directory_flag, 1, 1, 0, 0, + &default_print_directory_flag, "print-directory" }, /* 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, + { 'I', filename, &include_dirs, 1, 1, 0, 0, 0, "include-dir" }, { 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots, "jobs" }, @@ -455,15 +479,20 @@ static const struct command_switch switches[] = /* 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+2, string, &jobserver_auth, 1, 1, 0, 0, 0, JOBSERVER_AUTH_OPT }, { 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+4, flag_off, &print_directory_flag, 1, 1, 0, 0, + &default_print_directory_flag, "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+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" }, + /* There is special-case handling for this in decode_switches() as well. */ + { TEMP_STDIN_OPT, filename, &makefiles, 0, 0, 0, 0, 0, "temp-stdin" }, + { CHAR_MAX+11, string, &shuffle_mode, 1, 1, 0, "random", 0, "shuffle" }, + { CHAR_MAX+12, string, &jobserver_style, 1, 0, 0, 0, 0, "jobserver-style" }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; @@ -548,10 +577,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 +612,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 +686,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 +775,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 +790,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 +820,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 +875,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 +989,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 +1003,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 +1016,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 +1038,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 +1058,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 +1084,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,6 +1135,23 @@ reset_jobserver (void) jobserver_auth = NULL; } +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 _AMIGA int main (int argc, char **argv) @@ -1054,13 +1160,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 +1177,21 @@ main (int argc, char **argv, char **envp) no_default_sh_exe = 1; #endif + initialize_variable_output (); + /* Useful for attaching debuggers, etc. */ SPIN ("main-entry"); + /* Don't die if our stdout sends us SIGPIPE. */ +#ifdef SIGPIPE + bsd_signal (SIGPIPE, SIG_IGN); +#endif + +#ifdef HAVE_ATEXIT + if (ANY_SET (check_io_state (), IO_STDOUT_OK)) + atexit (close_stdout); +#endif + output_init (&make_sync); initialize_stopchar_map(); @@ -1206,7 +1323,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 +1388,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 +1431,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" +# ifdef HAVE_MKFIFO + " jobserver-fifo" +# endif #endif #ifndef NO_OUTPUT_SYNC " output-sync" @@ -1359,7 +1481,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 +1505,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], STRING_SIZE_TUPLE ("MAKE_RESTARTS")) == 0) { if (*ep == '-') { OUTPUT_TRACED (); ++ep; } - restarts = (unsigned int) atoi (ep); + restarts = make_toui (ep, NULL); export = v_noexport; } @@ -1412,50 +1534,53 @@ 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)); - /* 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")); + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); #if 0 /* People write things like: @@ -1483,6 +1608,39 @@ main (int argc, char **argv, char **envp) 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 +1673,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 +1681,26 @@ 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 the user didn't specify any print-directory options, compute the + default setting: disable under -s / print in sub-makes and under -C. */ + + if (print_directory_flag == -1) + print_directory = !silent_flag && (directories != 0 || makelevel > 0); + else + print_directory = print_directory_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 +1757,63 @@ 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); + /* 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 +1826,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.")); @@ -1687,163 +1911,59 @@ main (int argc, char **argv, char **envp) #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. */ - { - 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 */ - - /* Except under -s, always do -w in sub-makes and under -C. */ - if (!silent_flag && (directories != 0 || makelevel > 0)) - print_directory_flag = 1; - - /* Let the user disable that with --no-print-directory. */ - if (inhibit_print_directory_flag) - print_directory_flag = 0; - - /* If -R was given, set -r too (doesn't make sense otherwise!) */ - if (no_builtin_variables_flag) - no_builtin_rules_flag = 1; - - /* Construct the list of include directories to search. */ - - 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; - } - - define_variable_cname ("CURDIR", current_directory, o_file, 0); - - /* Read any stdin makefiles into temporary files. */ - - if (makefiles != 0) - { - unsigned int i; - for (i = 0; i < makefiles->idx; ++i) - if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0') + 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; + char *newnm; - if (stdin_nm) + if (stdin_offset >= 0) 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" + _("Makefile from standard input specified twice")); - 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; + outfile = get_tmpfile (&newnm); - 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)")); + OSS (fatal, NILF, + _("fwrite: temporary file %s: %s"), newnm, strerror (errno)); } 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); + /* 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; - /* 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; - } + free (newnm); } } + /* Make sure the temporary file is never considered updated. */ + if (stdin_offset >= 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 */ #if !defined(HAVE_WAIT_NOHANG) || defined(MAKE_JOBSERVER) /* Set up to handle children dying. This must be done before @@ -1915,7 +2035,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 +2047,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)); /* 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)); #if 0 decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); #endif @@ -1995,7 +2086,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 +2109,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 +2129,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 +2202,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 +2226,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) { @@ -2177,23 +2323,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 +2365,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,17 +2402,19 @@ 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; - } } } @@ -2261,6 +2434,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 +2458,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 +2507,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 +2516,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 +2574,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 +2697,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 +2759,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); @@ -2491,12 +2799,15 @@ 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. */ @@ -2516,10 +2827,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 +2889,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"))); @@ -2788,33 +3100,6 @@ handle_non_switch_argument (const char *arg, int env) } } -/* Print a nice usage method. */ - -static void -print_usage (int bad) -{ - 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 switches from ARGC and ARGV. They came from the environment if ENV is nonzero. */ @@ -2842,7 +3127,7 @@ 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. */ @@ -2886,7 +3171,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"; @@ -2928,10 +3213,31 @@ 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); - else + + /* 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); + 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); + } + else + sl->list[sl->idx++] = expand_command_line_file (coptarg); sl->list[sl->idx] = 0; break; @@ -2952,14 +3258,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"), @@ -2980,9 +3282,8 @@ 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); break; } @@ -2999,11 +3300,8 @@ decode_switches (int argc, const char **argv, int env) while (optind < argc) handle_non_switch_argument (argv[optind++], env); - if (!env && (bad || print_usage_flag)) - { - print_usage (bad); - die (bad ? MAKE_FAILURE : MAKE_SUCCESS); - } + if (bad && !env) + print_usage (bad); /* If there are any options that need to be decoded do it now. */ decode_debug_flags (); @@ -3011,6 +3309,9 @@ decode_switches (int argc, const char **argv, int env) /* Perform any special switch handling. */ run_silent = silent_flag; + + /* Construct the list of include directories to search. */ + construct_include_path (include_dirs ? include_dirs->list : NULL); } /* Decode switches from environment variable ENVAR (which is LEN chars long). @@ -3018,7 +3319,7 @@ decode_switches (int argc, const char **argv, int env) dash to the first word if it lacks one, and passing the vector to decode_switches. */ -static void +void decode_env_switches (const char *envar, size_t len) { char *varref = alloca (2 + len + 2); @@ -3027,11 +3328,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 +3347,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 @@ -3115,6 +3417,7 @@ define_makeflags (int all, int makefile) const char posixref[] = "-*-command-variables-*-"; const char evalref[] = "$(-*-eval-flags-*-)"; const struct command_switch *cs; + struct variable *v; char *flagstring; char *p; @@ -3170,66 +3473,54 @@ define_makeflags (int all, int makefile) 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 +3561,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,8 +3593,7 @@ 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) @@ -3315,17 +3604,14 @@ define_makeflags (int all, int makefile) const char *r = posix_pedantic ? posixref : ref; size_t l = strlen (r); - struct variable *v = lookup_variable (r, l); + v = lookup_variable (r, l); if (v && v->value && v->value[0] != '\0') { - strcpy (p, " -- "); - p += 4; - + p = stpcpy (p, " -- "); *(p++) = '$'; *(p++) = '('; - memcpy (p, r, l); - p += l; + p = mempcpy (p, r, l); *(p++) = ')'; } } @@ -3340,8 +3626,11 @@ 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; } /* Print version information. */ @@ -3370,19 +3659,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-2022 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 +3745,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 +3781,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..c726abe 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-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 @@ -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 @@ -41,6 +41,21 @@ char *alloca (); # endif #endif +/* 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 */ + +#if defined (__has_builtin) +# if __has_builtin (__builtin_alloca) +# define free_alloca() +# else +# define free_alloca() alloca (0) +# endif +#else +# define free_alloca() alloca (0) +#endif + /* Disable assert() unless we're a maintainer. Some asserts are compute-intensive. */ #ifndef MAKE_MAINTAINER_MODE @@ -79,16 +94,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 @@ -115,7 +124,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 +132,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 +152,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 @@ -289,6 +295,21 @@ char *strerror (int errnum); #if HAVE_STDINT_H # include #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) @@ -388,11 +409,13 @@ extern int unixy_shell; # define WIN32_LEAN_AND_MEAN #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)) #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 @@ -446,10 +469,16 @@ extern int unixy_shell; #define STOP_SET(_v,_m) ANY_SET(stopchar_map[(unsigned char)(_v)],(_m)) +/* True if C is a directory separator on the current system. */ +#define ISDIRSEP(c) STOP_SET((c),MAP_DIRSEP) +/* 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) /* 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 +493,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 +512,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 +540,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 +558,18 @@ void out_of_memory () NORETURN; #define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \ (_f), (_n), (_s)) +void decode_env_switches (const char*, size_t line); +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 +584,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 +600,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 +637,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 +653,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 +673,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 @@ -650,10 +706,20 @@ int strcasecmp (const char *s1, const char *s2); # define strncasecmp strncmpi # else /* Create our own, in misc.c */ -int strncasecmp (const char *s1, const char *s2, int n); +int strncasecmp (const char *s1, const char *s2, size_t n); # endif #endif +#if !HAVE_MEMPCPY +/* Create our own, in misc.c */ +void *mempcpy (void *dest, const void *src, size_t n); +#endif + +#if !HAVE_STPCPY +/* Create our own, in misc.c */ +char *stpcpy (char *dest, const char *src); +#endif + #define OUTPUT_SYNC_NONE 0 #define OUTPUT_SYNC_LINE 1 #define OUTPUT_SYNC_TARGET 2 @@ -670,21 +736,28 @@ 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, print_directory, 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; +#define JOBSERVER_AUTH_OPT "jobserver-auth" + +extern char *jobserver_auth; extern unsigned int job_slots; extern double max_load_average; @@ -737,7 +810,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..8264fe9 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-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 @@ -12,11 +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 "makeint.h" #include "filedef.h" #include "dep.h" +#include "os.h" #include "debug.h" /* GNU make no longer supports pre-ANSI89 environments. */ @@ -34,6 +35,71 @@ this program. If not, see . */ # 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. */ @@ -173,6 +239,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 +384,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 +530,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,53 +568,187 @@ 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') + pfatal_with_name ("mktemp"); # else - (void) tmpnam (*name); + path = xmalloc (L_tmpnam + 1); + if (tmpnam (path) == NULL) + pfatal_with_name ("tmpnam"); # 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. */ +int +get_tmpfd (char **name) +{ + int fd = -1; + char *tmpnm; + mode_t mask; + + /* If there's an os-specific way to get an anoymous temp file use it. */ + if (!name) + { + 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 (); + + /* 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 (fatal, NILF, + _("create temporary file %s: %s"), tmpnm, strerror (errno)); + + if (name) + *name = tmpnm; + else + { + int r; + EINTRLOOP (r, unlink (tmpnm)); + if (r < 0) + OSS (fatal, NILF, + _("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. + Note, this 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 = get_tmpfd (name); + + ENULLLOOP (file, fdopen (fd, tmpfile_mode)); + if (file == NULL) + OSS (fatal, 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); + int err; + + *name = get_tmppath (); + + /* 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 (fatal, NILF, + _("fopen: temporary file %s: %s"), *name, strerror (errno)); + + umask (mask); +#endif + return file; } @@ -535,8 +762,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 +783,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 +805,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 (); + char *d = dest; + const char *s = src; - 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. */ - -#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 (); - - if (current_access == make) - return; + static char msg[256]; - /* See comments in user_access, above. */ +#define SETMSG(_e, _m) case _e: strcpy(msg, _m); break -#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..ac3a7bf --- /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 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" + +/* 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" diff --git a/src/os.h b/src/os.h index e7bf37a..fe0a997 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-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 @@ -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 2211749..43eb2f0 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. +Copyright (C) 2013-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 @@ -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" @@ -47,30 +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 - /* 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 @@ -143,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) @@ -250,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; } @@ -309,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) @@ -324,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 { @@ -338,12 +243,15 @@ setup_tmpfile (struct output *out) } } + in_setup = 0; return; /* If we failed to create a temp file, disable output sync going forward. */ error: 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 @@ -354,6 +262,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); @@ -364,10 +274,15 @@ 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 (print_directory && output_sync != OUTPUT_SYNC_RECURSE) traced = log_working_directory (1); if (outfd_not_empty) @@ -379,8 +294,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) @@ -400,53 +314,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) { @@ -457,28 +324,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 @@ -517,7 +366,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 && print_directory) stdio_traced = log_working_directory (1); } @@ -560,10 +409,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) { @@ -580,8 +430,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. */ @@ -590,12 +440,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); @@ -611,8 +462,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. */ @@ -622,12 +473,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); @@ -643,8 +495,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..5957605 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. +Copyright (C) 2013-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 @@ -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 525f292..44aeb34 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-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 @@ -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,10 +20,15 @@ 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 !defined(FD_OK) +# define FD_OK(_f) 1 +#endif + #if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H) # include #endif @@ -32,10 +37,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 +89,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. */ @@ -81,13 +136,61 @@ set_blocking (int fd, int blocking) } 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 HAVE_MKFIFO + if (style == NULL || 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 +210,68 @@ 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 (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; + } + /* 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; + + job_fds[0] = rfd; + job_fds[1] = wfd; + + js_type = js_pipe; + } + /* Who knows what it is? */ + else + { + OS (error, NILF, _("invalid --jobserver-auth string '%s'"), auth); + 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. */ + /* 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 (!FD_OK (job_fds[0]) || !FD_OK (job_fds[1]) || make_job_rfd () < 0) + 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; } @@ -145,25 +279,51 @@ jobserver_parse_auth (const char *auth) /* When using pselect() we want the read to be non-blocking. */ set_blocking (job_fds[0], 0); + /* By default we don't send the job pipe FDs to our children. + See jobserver_pre_child() and jobserver_post_child(). */ + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + return 1; } 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]); @@ -173,6 +333,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 @@ -189,8 +366,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. */ @@ -203,19 +381,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]); @@ -226,7 +409,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]); @@ -234,7 +417,7 @@ jobserver_post_child (int recursive) } void -jobserver_signal (void) +jobserver_signal () { if (job_rfd >= 0) { @@ -244,7 +427,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) @@ -297,7 +480,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")); @@ -319,7 +502,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; } @@ -351,7 +534,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) { } @@ -442,9 +625,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; @@ -458,7 +762,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]; @@ -501,12 +805,77 @@ 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) + pfatal_with_name ("tmpfile"); + umask (mask); + + EINTRLOOP (fd, dup (fileno (tfile))); + if (fd < 0) + pfatal_with_name ("dup"); + fclose (tfile); + } +#endif + + return fd; +} diff --git a/src/read.c b/src/read.c index fa197fb..0743124 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-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 @@ -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,7 +107,9 @@ 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", @@ -142,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, @@ -161,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. */ @@ -263,10 +266,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 (); @@ -274,14 +273,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; } } @@ -376,22 +370,29 @@ 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 && (flags & RM_INCLUDED) + && *filename != '/' && include_directories) { - 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; + } } } @@ -418,6 +419,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)); @@ -440,7 +446,7 @@ eval_makefile (const char *filename, unsigned short flags) fclose (ebuf.fp); free (ebuf.bufstart); - alloca (0); + free_alloca (); errno = 0; return deps; @@ -482,7 +488,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. @@ -497,7 +503,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)); @@ -525,19 +531,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; @@ -722,7 +730,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; @@ -751,8 +759,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; @@ -906,9 +914,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; @@ -952,28 +958,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; @@ -997,7 +1013,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. */ @@ -1017,9 +1033,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); @@ -1093,7 +1111,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, ':'); @@ -1182,7 +1200,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 @@ -1190,7 +1208,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); @@ -1264,8 +1282,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; @@ -1322,79 +1339,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); } } @@ -1912,7 +1857,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. */ @@ -1935,6 +1881,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. @@ -2076,29 +2147,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. - 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 ("ARFLAGS", "-rv", 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 +2203,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 +2250,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 +2293,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 +2405,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 +2452,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 +2527,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 +2777,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 +2863,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 +2967,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 +2986,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 +2996,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 +3027,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); + /* 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); - - 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 +3068,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 +3083,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 +3138,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 +3173,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 +3190,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 +3272,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 fb237c5..4ce3d2a 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-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 @@ -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 supprots _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 @@ -86,8 +113,8 @@ update_goal_chain (struct goaldep *goaldeps) 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,7 +128,7 @@ 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. */ @@ -112,13 +139,15 @@ update_goal_chain (struct goaldep *goaldeps) reap_children (1, 0); 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 +207,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 +257,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 +308,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 +364,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 +436,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 +445,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 +469,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 +479,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; @@ -484,8 +511,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 +522,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 +571,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 +602,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 +660,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,58 +670,65 @@ 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); @@ -678,7 +741,7 @@ update_file_1 (struct file *file, unsigned int depth) set_command_state (file, cs_deps_running); --depth; DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n")); - return 0; + return us_success; } /* If any dependency failed, give up now. */ @@ -806,6 +869,10 @@ 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. */ + file->secondary = 1; + notice_finished_file (file); /* Since we don't need to remake the file, convert it to use the @@ -818,7 +885,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 +904,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) @@ -972,23 +1039,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". */ @@ -1035,10 +1109,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 +1148,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) { @@ -1414,7 +1491,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 +1543,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 +1570,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 +1579,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 +1648,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. */ @@ -1646,7 +1731,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. */ { @@ -1663,10 +1748,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..c8543f9 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-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 @@ -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..d7cc260 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-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 @@ -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..0fc64bc 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-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 @@ -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; @@ -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..cadac3f 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-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 @@ -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..d1a52a0 --- /dev/null +++ b/src/shuffle.c @@ -0,0 +1,237 @@ +/* Provide prerequisite shuffle support. +Copyright (C) 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 . */ + +#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..d4374a3 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-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 @@ -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..f081ea7 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-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 @@ -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/variable.c b/src/variable.c index e379622..0bd9963 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-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 @@ -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'; @@ -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; @@ -601,8 +607,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 +648,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; } @@ -977,106 +984,112 @@ 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; + 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; - - 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; + /* If we're not global, or we are and should export, add it. */ + 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,39 +1097,120 @@ 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) + if (v->recursive && v->origin != o_env && v->origin != o_env_override) + 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; } @@ -1130,6 +1224,8 @@ set_special_var (struct variable *var) properly. */ cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0]; } + else if (streq (var->name, MAKEFLAGS_NAME)) + decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME)); return var; } @@ -1175,10 +1271,6 @@ 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 @@ -1186,6 +1278,25 @@ do_variable_definition (const floc *flocp, const char *varname, target-specific variable. */ p = 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); + p = t; + while (p[0] != '\0') + { + if (p[0] == '$') + *(np++) = '$'; + *(np++) = *(p++); + } + *np = '\0'; + p = alloc_value; + free (t); + break; + } case f_shell: { /* A shell definition "var != value". Expand value, pass it to @@ -1280,8 +1391,12 @@ do_variable_definition (const floc *flocp, const char *varname, free (tp); } - break; } + break; + case f_bogus: + default: + /* Should not be possible. */ + abort (); } #ifdef __MSDOS__ @@ -1421,8 +1536,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), p, origin, + flavor == f_recursive || flavor == f_expand, (target_var ? current_variable_set_list->set : NULL), flocp); @@ -1437,7 +1552,7 @@ do_variable_definition (const floc *flocp, const char *varname, /* 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 +1564,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 +1583,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; } @@ -1671,7 +1804,6 @@ print_variable (const void *item, void *arg) origin = _("'override' directive"); break; case o_invalid: - default: abort (); } fputs ("# ", stdout); @@ -1795,7 +1927,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 +1938,20 @@ 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); - - /* Create something WINDOWS32 world can grok. */ + /* Convert PATH into 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..d377a47 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-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 @@ -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); @@ -230,7 +238,7 @@ void undefine_variable_in_set (const char *name, size_t length, (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..b96e030 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. +Copyright (C) 1988-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 @@ -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..ebcebcd 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-2022 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 diff --git a/src/vms_export_symbol.c b/src/vms_export_symbol.c index 9b4ed78..a1a7c16 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-2022 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..1d6edbd 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-2022 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..0f8fe3a 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-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 @@ -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..499f339 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-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 @@ -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..7c3426e 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-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 @@ -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 Kämpf (kkaempf@progis.de) of proGIS Software, Aachen, Germany */ diff --git a/src/vmsjobs.c b/src/vmsjobs.c index 979a209..66381b8 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-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 @@ -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 @@ -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 */ @@ -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..9c95441 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-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 @@ -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" @@ -239,8 +239,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 +276,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 +378,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 +390,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..e9cb1d2 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-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 @@ -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..f1013ae 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-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 @@ -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..2712e51 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-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 @@ -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..dc1d529 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-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 @@ -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..374d805 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-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 @@ -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..83f71f6 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-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 @@ -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..d67e84b 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-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 @@ -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..38dbc2a 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-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 @@ -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. */ diff --git a/src/w32/subproc/misc.c b/src/w32/subproc/misc.c index af5567c..c611e09 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-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 @@ -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..4133813 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-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 @@ -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..501afc3 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-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 @@ -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 */ diff --git a/src/w32/subproc/w32err.c b/src/w32/subproc/w32err.c index 5ae3043..eb20103 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-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 @@ -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/w32os.c b/src/w32/w32os.c index fe74811..9c5dec2 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-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 @@ -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,22 +22,202 @@ 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(); @@ -90,6 +270,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 +386,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 +508,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..6ffa19a 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-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 @@ -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..d02ea66 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-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 @@ -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/mkshadow b/tests/mkshadow index e7533c8..4615aec 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-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 @@ -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..b90b6e3 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-2022 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..70dd182 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-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 @@ -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 @@ $cwdpath = cwd(); $has_POSIX = eval { require "POSIX.pm" }; %FEATURES = (); +%DEFVARS = ( + AR => undef, + CC => undef +); $valgrind = 0; # invoke make with valgrind $valgrind_args = ''; @@ -104,61 +108,7 @@ $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 +118,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; } @@ -179,7 +129,7 @@ sub valid_option $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; + exit 1; } return 1; } @@ -234,6 +184,7 @@ sub subst_make_string s/#MAKE#/$make_name/g; s/#PERL#/$perl_name/g; s/#PWD#/$cwdpath/g; + s/#WORK#/$workdir/g; # If we're using a shell 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,81 @@ 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 = "$!"; + } + + 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 { + chomp($_); + 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 +582,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 +592,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; @@ -649,6 +670,18 @@ sub set_more_defaults %FEATURES = map { $_ => 1 } split /\s+/, `$make_path -sf features.mk`; 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 dcd38e5..809bf21 100644 --- a/tests/scripts/features/archives +++ b/tests/scripts/features/archives @@ -35,16 +35,17 @@ my $ar = get_config('AR') || 'ar'; my $redir = '2>&1'; $redir = '' if $osname eq 'VMS'; -my $arflags = 'rv'; +# 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. unlink('libxx.a'); -$_ = `$ar U$arflags libxx.a a1.o $redir`; +$_ = `$ar ${arflags}U libxx.a a1.o $redir`; if ($? == 0) { - $arflags = 'Urv'; + $arflags = "${arflags}U"; $arvar = "$arvar ARFLAGS=$arflags"; } 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..2cdaf31 100644 --- a/tests/scripts/features/errors +++ b/tests/scripts/features/errors @@ -31,6 +31,18 @@ all: !, '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#:5: all] Error 1", 512); +# Windows error look completely different :-/ + +sub errors_getinfo +{ + my ($cmd, $args) = @_; + if ($port_type eq 'W32') { + return (2, "process_begin: CreateProcess(NULL, $cmd $args, ...) failed.\nmake (e=2): The system cannot find the file specified."); + } + + return (127, "#MAKE#: $cmd: $ERR_no_such_file"); +} + # TEST #3 # ------- @@ -38,35 +50,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,7 +99,7 @@ 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"; run_make_test(q! PATH := . 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..ad58177 100644 --- a/tests/scripts/features/export +++ b/tests/scripts/features/export @@ -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..564dc5b --- /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 exersizes 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 +# specfic 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..69d6718 100644 --- a/tests/scripts/features/include +++ b/tests/scripts/features/include @@ -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,140 @@ 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)); + 1; diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver index 73d10d9..8ecbe34 100644 --- a/tests/scripts/features/jobserver +++ b/tests/scripts/features/jobserver @@ -25,17 +25,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 +42,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 +62,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 +82,79 @@ 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", + "--jobserver-style=pipe -j2 $np", "#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. #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 -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: +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); + +# 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. +if (exists $FEATURES{'jobserver-fifo'}) { + $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:\\./"); +} + +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 1d09174..13a54ca 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -116,20 +116,24 @@ EOF close(MAKEFILE); # Test per-make synchronization. +# Note we have to sleep again here after starting the foo makefile before +# starting the bar makefile, otherwise the "entering/leaving" messages for the +# submakes might be ordered differently than we expect. + unlink(@syncfiles); run_make_test(qq! all: make-foo make-bar make-foo: ; \$(MAKE) -C foo -make-bar: ; \$(MAKE) -C bar!, +make-bar: ; #HELPER# -q sleep 1 ; \$(MAKE) -C bar!, '-j -Orecurse', "#MAKEPATH# -C foo #MAKE#[1]: Entering directory '#PWD#/foo' foo: start foo: end #MAKE#[1]: Leaving directory '#PWD#/foo' -#MAKEPATH# -C bar +#HELPER# -q sleep 1 ; #MAKEPATH# -C bar #MAKE#[1]: Entering directory '#PWD#/bar' bar: start bar: end @@ -338,5 +342,30 @@ 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); +chomp($_); +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. +run_make_test(q! +pid:=$(shell echo $$PPID) +all:; @kill -TERM $(pid) && sleep 16 +!, '-O -j2', '/#MAKE#: \*\*\* \[#MAKEFILE#:3: all] Terminated/', POSIX::SIGTERM); +} + +unlink($fout); +} + # 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..98ee8a3 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\nfail 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\nfail 1 +#MAKE#: *** [#MAKEFILE#:6: fail.2] Error 1 +fail.3\nfail 1 +#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..0b35408 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 prequisite 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..07cbbfb 100644 --- a/tests/scripts/features/reinvoke +++ b/tests/scripts/features/reinvoke @@ -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,109 @@ 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 DV 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"); + +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..d1247d4 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. +# Multipe 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/statipattrules b/tests/scripts/features/statipattrules index 3f363de..e4e118e 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 prequisite 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 substitude 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/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..b06df53 --- /dev/null +++ b/tests/scripts/features/temp_stdin @@ -0,0 +1,118 @@ +# -*-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); +chomp($_); +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. +&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; @kill -TERM $(pid) && sleep 16 +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); +} + +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..a3fba87 100644 --- a/tests/scripts/functions/eval +++ b/tests/scripts/functions/eval @@ -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..50948a0 100644 --- a/tests/scripts/functions/file +++ b/tests/scripts/functions/file @@ -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/shell b/tests/scripts/functions/shell index 5986529..d89a0c8 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"); @@ -81,10 +155,60 @@ $(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/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..c8c839e 100644 --- a/tests/scripts/misc/close_stdout +++ b/tests/scripts/misc/close_stdout @@ -4,6 +4,6 @@ $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); +run_make_test("\n", '-v > /dev/full', '/^#MAKE#: write error/', 256); 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..cfd69a8 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,27 @@ 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); +# 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-I b/tests/scripts/options/dash-I index 5d2df38..64ee7c5 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]; +chomp $dirs; +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..944c39d 100644 --- a/tests/scripts/options/dash-e +++ b/tests/scripts/options/dash-e @@ -4,21 +4,12 @@ $description = "The following test creates a makefile to ..."; $details = ""; -$extraENV{GOOGLE} = 'boggle'; +$ENV{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"); 1; diff --git a/tests/scripts/options/dash-f b/tests/scripts/options/dash-f index 3aa4746..ab225ce 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,92 @@ $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); +} + +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..d1e6049 100644 --- a/tests/scripts/options/dash-l +++ b/tests/scripts/options/dash-l @@ -42,9 +42,10 @@ $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); -$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("", &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/print-directory b/tests/scripts/options/print-directory index db762b2..7ba9a2e 100644 --- a/tests/scripts/options/print-directory +++ b/tests/scripts/options/print-directory @@ -2,15 +2,25 @@ $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! 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/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..e4690b1 --- /dev/null +++ b/tests/scripts/targets/NOTINTERMEDIATE @@ -0,0 +1,119 @@ +# -*-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. +unlink('hello.z'); +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..f9da14b 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 2", 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 2", 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 c44cc50..c40b8db 100644 --- a/tests/scripts/targets/POSIX +++ b/tests/scripts/targets/POSIX @@ -20,6 +20,8 @@ all: ; \@$script '', "#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); # User settings must override .POSIX +# In the standard .POSIX must be the first thing in the makefile +# but we relax that rule in GNU make. $flags = '-xc'; $out = `$sh_name $flags '$script' 2>&1`; run_make_test(qq! @@ -47,7 +49,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..6881292 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]; +chomp $dirs; +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..a41f1cf 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,120 @@ 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; + +# Simple flags. +@opts = ('i', 'k', 'n', 'q', 'r', 's', 'w', 'd'); +exists $FEATURES{'check-symlink'} and push @opts, 'L'; + +for my $opt (@opts) { + run_make_test(q! +MAKEFLAGS:=B +all:; $(info makeflags='$(MAKEFLAGS)') +!, "-$opt", "/makeflags='B$opt'/"); +} + +# Switches which carry arguments. +@opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $opt (@opts) { + run_make_test(q! +MAKEFLAGS:=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 $opt (@opts) { +run_make_test(q! +MAKEFLAGS:=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 = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); +$ENV{'MAKEFLAGS'} = $opt; +for my $opt (@opts) { + run_make_test(" +MAKEFLAGS:=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. +$ENV{'MAKEFLAGS'} = '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2'; +run_make_test(q! +MAKEFLAGS:=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'/"); -### Local Variables: -### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) -### End: +# A mix of multiple flags from env, the makefile and command line. +# Skip -L since it's not available everywhere +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables --trace'; +run_make_test(q! +MAKEFLAGS:=iknqrswd -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 +all:; $(info makeflags='$(MAKEFLAGS)') +!, +'-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrswd -i -n -s -k -I/tmp', +"/makeflags='Bdiknqrsw -I/tmp -l2.5 -Onone --trace --warn-undefined-variables'/"); + +# Verify MAKEFLAGS are all available to shell functions +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; +run_make_test(q! +MAKEFLAGS := iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +XX := $(shell echo "$$MAKEFLAGS") +all:; $(info makeflags='$(XX)') +!, + '-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp', + "makeflags='iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory'"); + +# 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/"); + + +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..78d887c 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"; @@ -41,7 +39,7 @@ all:;@echo "$(SHELL) $$SHELL" # 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 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/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/test_driver.pl b/tests/test_driver.pl index f18e785..b64fffb 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-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 @@ -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; @@ -47,48 +48,61 @@ $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 @@ -150,27 +164,45 @@ 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', + # DJGPP-specific things 'DJDIR', 'DJGPP', 'SHELL', 'COMSPEC', 'HOSTNAME', 'LFN', 'FNCASE', '387', 'EMU387', 'GROUP' ) { @@ -180,12 +212,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 +223,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 +233,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 +294,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 +310,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 +323,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 +350,8 @@ sub toplevel rmdir ("$workpath/$dir"); } + rmdir ($temppath); + $| = 1; $categories_failed = $categories_run - $categories_passed; @@ -319,6 +378,8 @@ 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. @@ -354,10 +415,7 @@ sub get_osname $port_type = 'UNIX'; } - if ($osname eq 'VMS') - { - $vos = 0; - $pathsep = "/"; + if ($osname eq 'VMS') { return; } @@ -387,7 +445,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 +460,6 @@ sub get_osname $osname = "(something posixy)"; } } - $vos = 0; - $pathsep = "/"; } if (! $short_filenames) { @@ -497,12 +553,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 +571,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,21 +607,6 @@ 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'; $log_filename = "$testpath.$logext"; $diff_filename = "$testpath.$diffext"; @@ -559,7 +620,7 @@ sub run_all_tests $output = "........................................................ "; - substr($output,0,length($testname)) = "$testname "; + substr($output, 0, length($testname)) = "$testname "; print $output; @@ -569,6 +630,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; @@ -641,6 +705,8 @@ sub run_all_tests print "$status\n"; } + + close(INCOPY); } # If the keep flag is not set, this subroutine deletes all filenames that @@ -740,13 +806,29 @@ sub error die "$caller: $message"; } +my %old_tempfiles = (); + sub compare_output { - my ($answer,$logfile) = @_; - my ($slurp, $answer_matched) = ('', 0); + my ($answer, $logfile) = @_; + my ($slurp, $answer_matched, $extra) = ('', 0, 0); ++$tests_run; + 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; + } + if (! defined $answer) { print "Ignoring output ........ " if $debug; $answer_matched = 1; @@ -773,7 +855,8 @@ sub compare_output $slurp_mod =~ s,\r\n,\n,gs; $answer_matched = ($slurp_mod eq $answer_mod); - if ($^O eq 'VMS') { + + if (!$answer_matched && $^O eq 'VMS') { # VMS has extra blank lines in output sometimes. # Ticket #41760 @@ -899,7 +982,12 @@ sub compare_output } } - if ($answer_matched && $test_passed) { + if ($keep || ! $answer_matched) { + &create_file(&get_basefile, $answer); + &create_file(&get_runfile, $command_string); + } + + if ($answer_matched && $test_passed && !$extra) { print "ok\n" if $debug; ++$tests_passed; return 1; @@ -908,15 +996,16 @@ sub compare_output if (! $answer_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) { + my $command = "$diff_name -c $base $logfile"; + &run_command_with_output(get_difffile(), $command); + } else { + create_file(get_difffile(), "Log file $logfile differs from base file $base\n"); + } } return 0; @@ -947,7 +1036,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; } @@ -1059,15 +1148,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: $@"; diff --git a/tests/thelp.pl b/tests/thelp.pl index d8aaa66..993339c 100755 --- a/tests/thelp.pl +++ b/tests/thelp.pl @@ -8,7 +8,8 @@ # Each step consists of an operator and argument. # # It supports the following operators: -# out : echo to stdout +# out : echo to stdout with a newline +# raw : echo to stdout without adding anything # 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 @@ -23,7 +24,7 @@ $| = 1; my $quiet = 0; -my $timeout = 4; +my $timeout = 10; sub op { my ($op, $nm) = @_; @@ -34,6 +35,10 @@ sub op { print "$nm\n"; return 1; } + if ($op eq 'raw') { + print "$nm"; + return 1; + } # Show the output before creating the file if ($op eq 'file') { -- 2.7.4