summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS62
-rw-r--r--Basic.mk21
-rw-r--r--COPYING8
-rw-r--r--ChangeLog3209
-rw-r--r--INSTALL368
-rw-r--r--Makefile.am73
-rw-r--r--Makefile.in656
-rw-r--r--NEWS215
-rw-r--r--README113
-rw-r--r--README.Amiga14
-rw-r--r--README.DOS6
-rw-r--r--README.OS226
-rw-r--r--README.VMS90
-rw-r--r--README.W3274
-rw-r--r--README.customs22
-rw-r--r--aclocal.m4157
-rwxr-xr-xbuild-aux/compile6
-rwxr-xr-xbuild-aux/config.guess1203
-rwxr-xr-xbuild-aux/config.sub655
-rwxr-xr-xbuild-aux/depcomp3
-rwxr-xr-xbuild-aux/install-sh148
-rwxr-xr-xbuild-aux/mdate-sh2
-rwxr-xr-xbuild-aux/missing2
-rw-r--r--build-aux/texinfo.tex868
-rw-r--r--build.cfg.in4
-rwxr-xr-xbuild.sh61
-rw-r--r--[-rwxr-xr-x]build_w32.bat134
-rw-r--r--builddos.bat24
-rwxr-xr-xconfigure14416
-rw-r--r--configure.ac120
-rw-r--r--doc/Makefile.am4
-rw-r--r--doc/Makefile.in534
-rw-r--r--doc/fdl.texi2
-rw-r--r--doc/make-stds.texi6
-rw-r--r--doc/make.177
-rw-r--r--doc/make.info364
-rw-r--r--doc/make.info-11317
-rw-r--r--doc/make.info-21577
-rw-r--r--doc/make.info-3bin0 -> 19645 bytes
-rw-r--r--doc/make.texi1791
-rw-r--r--doc/stamp-vti8
-rw-r--r--doc/version.texi8
-rw-r--r--lib/Makefile.am1003
-rw-r--r--lib/Makefile.in1513
-rw-r--r--lib/_Noreturn.h40
-rw-r--r--lib/access.c31
-rw-r--r--lib/alloca.c325
-rw-r--r--lib/alloca.in.h39
-rw-r--r--lib/arg-nonnull.h26
-rw-r--r--lib/basename-lgpl.c75
-rw-r--r--lib/c++defs.h316
-rw-r--r--lib/close.c71
-rw-r--r--lib/concat-filename.c16
-rw-r--r--lib/concat-filename.h25
-rw-r--r--lib/dirname-lgpl.c86
-rw-r--r--lib/dirname.h54
-rw-r--r--lib/dosname.h52
-rw-r--r--lib/dup2.c235
-rw-r--r--lib/errno.in.h279
-rw-r--r--lib/error.c411
-rw-r--r--lib/error.h75
-rw-r--r--lib/exitfail.c24
-rw-r--r--lib/exitfail.h18
-rw-r--r--lib/fcntl.c627
-rw-r--r--lib/fcntl.in.h392
-rw-r--r--lib/fd-hook.c116
-rw-r--r--lib/fd-hook.h119
-rw-r--r--lib/filename.h110
-rw-r--r--lib/findprog-in.c234
-rw-r--r--lib/findprog.h22
-rw-r--r--lib/getdtablesize.c124
-rw-r--r--lib/getloadavg.c49
-rw-r--r--lib/getprogname.c260
-rw-r--r--lib/getprogname.h40
-rw-r--r--lib/gettext.h301
-rw-r--r--lib/intprops.h106
-rw-r--r--lib/limits.in.h104
-rw-r--r--lib/malloc.c56
-rw-r--r--lib/msvc-inval.c129
-rw-r--r--lib/msvc-inval.h222
-rw-r--r--lib/msvc-nothrow.c51
-rw-r--r--lib/msvc-nothrow.h43
-rw-r--r--lib/stdbool.in.h37
-rw-r--r--lib/stddef.in.h121
-rw-r--r--lib/stdint.in.h746
-rw-r--r--lib/stdio.in.h1444
-rw-r--r--lib/stdlib.in.h1112
-rw-r--r--lib/stpcpy.c49
-rw-r--r--lib/strerror-override.c302
-rw-r--r--lib/strerror-override.h56
-rw-r--r--lib/strerror.c71
-rw-r--r--lib/string.in.h1067
-rw-r--r--lib/stripslash.c45
-rw-r--r--lib/sys_types.in.h106
-rw-r--r--lib/unistd.c4
-rw-r--r--lib/unistd.in.h1719
-rw-r--r--lib/verify.h301
-rw-r--r--lib/warn-on-use.h58
-rw-r--r--lib/xalloc-die.c41
-rw-r--r--lib/xalloc-oversized.h60
-rw-r--r--lib/xalloc.h262
-rw-r--r--lib/xconcat-filename.c41
-rw-r--r--lib/xmalloc.c122
-rw-r--r--m4/00gnulib.m4107
-rw-r--r--m4/absolute-header.m4102
-rw-r--r--m4/access.m416
-rw-r--r--m4/acinclude.m44
-rw-r--r--m4/alloca.m446
-rw-r--r--m4/asm-underscore.m419
-rw-r--r--m4/close.m435
-rw-r--r--m4/dirname.m419
-rw-r--r--m4/dospaths.m44
-rw-r--r--m4/double-slash-root.m438
-rw-r--r--m4/dup2.m4117
-rw-r--r--m4/eaccess.m42
-rw-r--r--m4/errno_h.m4133
-rw-r--r--m4/error.m427
-rw-r--r--m4/extensions.m4174
-rw-r--r--m4/extern-inline.m4114
-rw-r--r--m4/fcntl-o.m4139
-rw-r--r--m4/fcntl.m4126
-rw-r--r--m4/fcntl_h.m452
-rw-r--r--m4/findprog-in.m42
-rw-r--r--m4/getdtablesize.m460
-rw-r--r--m4/getloadavg.m465
-rw-r--r--m4/getprogname.m443
-rw-r--r--m4/gnulib-cache.m410
-rw-r--r--m4/gnulib-common.m4767
-rw-r--r--m4/gnulib-comp.m4282
-rw-r--r--m4/host-cpu-c-abi.m411
-rw-r--r--m4/include_next.m4224
-rw-r--r--m4/largefile.m4180
-rw-r--r--m4/limits-h.m443
-rw-r--r--m4/malloc.m4104
-rw-r--r--m4/msvc-inval.m419
-rw-r--r--m4/msvc-nothrow.m410
-rw-r--r--m4/multiarch.m462
-rw-r--r--m4/off_t.m418
-rw-r--r--m4/sig_atomic_t.m414
-rw-r--r--m4/ssize_t.m423
-rw-r--r--m4/stdbool.m4124
-rw-r--r--m4/stddef_h.m472
-rw-r--r--m4/stdint.m4535
-rw-r--r--m4/stdio_h.m4225
-rw-r--r--m4/stdlib_h.m4136
-rw-r--r--m4/stpcpy.m425
-rw-r--r--m4/strerror.m4102
-rw-r--r--m4/string_h.m4122
-rw-r--r--m4/sys_socket_h.m4188
-rw-r--r--m4/sys_types_h.m460
-rw-r--r--m4/unistd_h.m4201
-rw-r--r--m4/warn-on-use.m435
-rw-r--r--m4/wchar_t.m424
-rw-r--r--m4/wint_t.m474
-rw-r--r--m4/xalloc.m47
-rw-r--r--m4/year2038.m4124
-rw-r--r--m4/zzgnulib.m423
-rw-r--r--makefile.com6
-rw-r--r--mk/Amiga.mk4
-rw-r--r--mk/VMS.mk6
-rw-r--r--mk/Windows32.mk4
-rw-r--r--mk/msdosdjgpp.mk4
-rw-r--r--po/LINGUAS1
-rw-r--r--po/POTFILES.in5
-rw-r--r--po/be.gmobin6580 -> 6136 bytes
-rw-r--r--po/be.po1118
-rw-r--r--po/bg.gmobin59330 -> 65584 bytes
-rw-r--r--po/bg.po1204
-rw-r--r--po/cs.gmobin45689 -> 50567 bytes
-rw-r--r--po/cs.po1228
-rw-r--r--po/da.gmobin41220 -> 46951 bytes
-rw-r--r--po/da.po1296
-rw-r--r--po/de.gmobin45198 -> 52220 bytes
-rw-r--r--po/de.po1832
-rw-r--r--po/es.gmobin45980 -> 41411 bytes
-rw-r--r--po/es.po1258
-rw-r--r--po/fi.gmobin31939 -> 30675 bytes
-rw-r--r--po/fi.po1253
-rw-r--r--po/fr.gmobin44911 -> 41807 bytes
-rw-r--r--po/fr.po1279
-rw-r--r--po/ga.gmobin43490 -> 38938 bytes
-rw-r--r--po/ga.po1193
-rw-r--r--po/gl.gmobin21543 -> 20076 bytes
-rw-r--r--po/gl.po1152
-rw-r--r--po/he.gmobin10151 -> 9710 bytes
-rw-r--r--po/he.po1125
-rw-r--r--po/hr.gmobin46070 -> 50639 bytes
-rw-r--r--po/hr.po1505
-rw-r--r--po/id.gmobin40284 -> 39490 bytes
-rw-r--r--po/id.po1321
-rw-r--r--po/it.gmobin45544 -> 41012 bytes
-rw-r--r--po/it.po1196
-rw-r--r--po/ja.gmobin48996 -> 54247 bytes
-rw-r--r--po/ja.po1251
-rw-r--r--po/ko.gmobin46973 -> 51905 bytes
-rw-r--r--po/ko.po1186
-rw-r--r--po/lt.gmobin7037 -> 6827 bytes
-rw-r--r--po/lt.po1116
-rw-r--r--po/make.pot1082
-rw-r--r--po/nl.gmobin44391 -> 48958 bytes
-rw-r--r--po/nl.po1236
-rw-r--r--po/pl.gmobin44530 -> 49133 bytes
-rw-r--r--po/pl.po1187
-rw-r--r--po/pt.gmobin43530 -> 39137 bytes
-rw-r--r--po/pt.po1192
-rw-r--r--po/pt_BR.gmobin44043 -> 39569 bytes
-rw-r--r--po/pt_BR.po1217
-rw-r--r--po/ro.gmobin0 -> 52157 bytes
-rw-r--r--po/ro.po2640
-rw-r--r--po/ru.gmobin56673 -> 51042 bytes
-rw-r--r--po/ru.po1193
-rw-r--r--po/sr.gmobin53185 -> 59190 bytes
-rw-r--r--po/sr.po1263
-rw-r--r--po/sv.gmobin43480 -> 48252 bytes
-rw-r--r--po/sv.po1200
-rw-r--r--po/tr.gmobin18996 -> 17599 bytes
-rw-r--r--po/tr.po1158
-rw-r--r--po/uk.gmobin56014 -> 61658 bytes
-rw-r--r--po/uk.po1229
-rw-r--r--po/vi.gmobin47388 -> 42515 bytes
-rw-r--r--po/vi.po1199
-rw-r--r--po/zh_CN.gmobin42126 -> 37823 bytes
-rw-r--r--po/zh_CN.po1191
-rw-r--r--po/zh_TW.gmobin42268 -> 45174 bytes
-rw-r--r--po/zh_TW.po1224
-rw-r--r--src/amiga.c16
-rw-r--r--src/amiga.h4
-rw-r--r--src/ar.c24
-rw-r--r--src/arscan.c124
-rw-r--r--src/commands.c141
-rw-r--r--src/commands.h11
-rw-r--r--src/config.ami40
-rw-r--r--src/config.h-vms43
-rw-r--r--src/config.h.W32239
-rw-r--r--src/config.h.in886
-rw-r--r--src/configh.dos59
-rw-r--r--src/debug.h6
-rw-r--r--src/default.c17
-rw-r--r--src/dep.h40
-rw-r--r--src/dir.c317
-rw-r--r--src/expand.c42
-rw-r--r--src/file.c282
-rw-r--r--src/filedef.h15
-rw-r--r--src/function.c597
-rw-r--r--src/getopt.c4
-rw-r--r--src/getopt.h4
-rw-r--r--src/getopt1.c4
-rw-r--r--src/gettext.h4
-rw-r--r--src/gmk-default.scm4
-rw-r--r--src/gnumake.h4
-rw-r--r--src/guile.c4
-rw-r--r--src/hash.c8
-rw-r--r--src/hash.h10
-rw-r--r--src/implicit.c344
-rw-r--r--src/job.c330
-rw-r--r--src/job.h13
-rw-r--r--src/load.c91
-rw-r--r--src/loadapi.c4
-rw-r--r--src/main.c1338
-rw-r--r--src/makeint.h159
-rw-r--r--src/misc.c689
-rw-r--r--src/mkconfig.h37
-rw-r--r--src/os.h123
-rw-r--r--src/output.c288
-rw-r--r--src/output.h58
-rw-r--r--src/posixos.c459
-rw-r--r--src/read.c597
-rw-r--r--src/remake.c315
-rw-r--r--src/remote-cstms.c23
-rw-r--r--src/remote-stub.c4
-rw-r--r--src/rule.c90
-rw-r--r--src/rule.h6
-rw-r--r--src/shuffle.c237
-rw-r--r--src/shuffle.h26
-rw-r--r--src/signame.c4
-rw-r--r--src/strcache.c4
-rw-r--r--src/variable.c545
-rw-r--r--src/variable.h26
-rw-r--r--src/version.c6
-rw-r--r--src/vms_exit.c6
-rw-r--r--src/vms_export_symbol.c8
-rw-r--r--src/vms_progname.c8
-rw-r--r--src/vmsdir.h4
-rw-r--r--src/vmsfunctions.c6
-rw-r--r--src/vmsify.c4
-rw-r--r--src/vmsjobs.c33
-rw-r--r--src/vpath.c15
-rw-r--r--src/w32/compat/dirent.c7
-rw-r--r--src/w32/compat/posixfcn.c343
-rw-r--r--src/w32/include/dirent.h4
-rw-r--r--src/w32/include/dlfcn.h4
-rw-r--r--src/w32/include/pathstuff.h4
-rw-r--r--src/w32/include/sub_proc.h4
-rw-r--r--src/w32/include/w32err.h4
-rw-r--r--src/w32/pathstuff.c18
-rw-r--r--src/w32/subproc/misc.c4
-rw-r--r--src/w32/subproc/proc.h4
-rw-r--r--src/w32/subproc/sub_proc.c10
-rw-r--r--src/w32/subproc/w32err.c4
-rw-r--r--src/w32/w32os.c302
-rw-r--r--tests/README56
-rwxr-xr-xtests/config_flags_pm.com4
-rwxr-xr-xtests/mkshadow4
-rw-r--r--tests/run_make_tests.bat4
-rw-r--r--tests/run_make_tests.pl181
-rw-r--r--tests/scripts/features/archives7
-rw-r--r--tests/scripts/features/default_names2
-rw-r--r--tests/scripts/features/dircache31
-rw-r--r--tests/scripts/features/double_colon150
-rw-r--r--tests/scripts/features/errors29
-rw-r--r--tests/scripts/features/exec29
-rw-r--r--tests/scripts/features/export42
-rw-r--r--tests/scripts/features/grouped_targets74
-rw-r--r--tests/scripts/features/implicit_search483
-rw-r--r--tests/scripts/features/include270
-rw-r--r--tests/scripts/features/jobserver97
-rw-r--r--tests/scripts/features/load54
-rw-r--r--tests/scripts/features/loadapi103
-rw-r--r--tests/scripts/features/mult_rules22
-rw-r--r--tests/scripts/features/output-sync33
-rw-r--r--tests/scripts/features/parallelism95
-rw-r--r--tests/scripts/features/patternrules550
-rw-r--r--tests/scripts/features/reinvoke118
-rw-r--r--tests/scripts/features/se_explicit305
-rw-r--r--tests/scripts/features/se_implicit240
-rw-r--r--tests/scripts/features/se_statpat133
-rw-r--r--tests/scripts/features/statipattrules208
-rw-r--r--tests/scripts/features/targetvars155
-rw-r--r--tests/scripts/features/temp_stdin118
-rw-r--r--tests/scripts/features/varnesting12
-rw-r--r--tests/scripts/features/vpath139
-rw-r--r--tests/scripts/features/vpath245
-rw-r--r--tests/scripts/features/vpath341
-rw-r--r--tests/scripts/features/vpathgpath4
-rw-r--r--tests/scripts/features/vpathplus97
-rw-r--r--tests/scripts/functions/eval2
-rw-r--r--tests/scripts/functions/file71
-rw-r--r--tests/scripts/functions/filter-out16
-rw-r--r--tests/scripts/functions/foreach4
-rw-r--r--tests/scripts/functions/intcmp72
-rw-r--r--tests/scripts/functions/let111
-rw-r--r--tests/scripts/functions/origin28
-rw-r--r--tests/scripts/functions/shell146
-rw-r--r--tests/scripts/functions/word102
-rw-r--r--tests/scripts/misc/bs-nl2
-rw-r--r--tests/scripts/misc/close_stdout2
-rw-r--r--tests/scripts/misc/fopen-fail4
-rw-r--r--tests/scripts/misc/general431
-rw-r--r--tests/scripts/options/dash-I123
-rw-r--r--tests/scripts/options/dash-d9
-rw-r--r--tests/scripts/options/dash-e17
-rw-r--r--tests/scripts/options/dash-f97
-rw-r--r--tests/scripts/options/dash-k5
-rw-r--r--tests/scripts/options/dash-l7
-rw-r--r--tests/scripts/options/dash-r44
-rw-r--r--tests/scripts/options/print-directory51
-rw-r--r--tests/scripts/options/shuffle128
-rw-r--r--tests/scripts/options/symlinks9
-rw-r--r--tests/scripts/targets/INTERMEDIATE84
-rw-r--r--tests/scripts/targets/NOTINTERMEDIATE119
-rw-r--r--tests/scripts/targets/ONESHELL51
-rw-r--r--tests/scripts/targets/POSIX4
-rw-r--r--tests/scripts/targets/WAIT193
-rw-r--r--tests/scripts/variables/GNUMAKEFLAGS22
-rw-r--r--tests/scripts/variables/INCLUDE_DIRS70
-rw-r--r--tests/scripts/variables/MAKEFLAGS143
-rw-r--r--tests/scripts/variables/MAKE_RESTARTS12
-rw-r--r--tests/scripts/variables/SHELL20
-rw-r--r--tests/scripts/variables/automatic26
-rw-r--r--tests/scripts/variables/define29
-rw-r--r--tests/scripts/variables/flavors44
-rw-r--r--tests/scripts/variables/negative14
-rw-r--r--tests/scripts/variables/undefine18
-rw-r--r--tests/test_driver.pl273
-rwxr-xr-xtests/thelp.pl9
375 files changed, 52360 insertions, 52421 deletions
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 <roland@gnu.org>
-
-
-Development starting with GNU make 3.76 by:
+GNU Make development starting with GNU Make 3.76 by:
Paul D. Smith <psmith@gnu.org>
- Additional development starting with GNU make 3.81 by:
+ Additional development starting with GNU Make 4.3 by:
+ Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ Additional development starting with GNU Make 3.81 by:
Boris Kolpackov <boris@kolpackov.net>
+GNU Make development up to version 3.75 by:
+ Roland McGrath <roland@gnu.org>
GNU Make User's Manual
Written by:
@@ -22,7 +23,7 @@ GNU Make User's Manual
Paul D. Smith <psmith@gnu.org>
-----------------------------------
-GNU make porting efforts:
+GNU Make porting efforts:
Port to VMS by:
Klaus Kaempf <kkaempf@progis.de>
@@ -34,6 +35,9 @@ GNU make porting efforts:
Port to Amiga by:
Aaron Digulla <digulla@fh-konstanz.de>
+ Port to MS-Windows (native/MinGW) maintained by:
+ Eli Zaretskii <eliz@gnu.org>
+
Port to MS-DOS (DJGPP), OS/2, and MS-Windows (native/MinGW) by:
DJ Delorie <dj@delorie.com>
Rob Tulloh <rob_tulloh@tivoli.com>
@@ -42,39 +46,67 @@ GNU make porting efforts:
Andreas Beuning <andreas.buening@nexgo.de>
Earnie Boyd <earnie@uses.sf.net>
Troy Runkel <Troy.Runkel@mathworks.com>
+ Juan M. Guerrero <juan.guerrero@gmx.de>
-----------------------------------
Other contributors:
+ Luke Allardyce <lukeallardyce@gmail.com>
+ Aron Barath <baratharon@caesar.elte.hu>
+ David Boyce <dsb@boyski.com>
+ Kevin Buettner <kevinb@redhat.com>
Janet Carson <janet_carson@tivoli.com>
Howard Chu <hyc@highlandsun.com>
Ludovic Courtès <ludo@gnu.org>
+ Joe Crayne <oh.hello.joe@gmail.com>
+ Jeremy Devenport <jeremy.devenport@gmail.com>
+ Pete Dietl <petedietl@gmail.com>
+ Martin Dorey <martin.dorey@hds.com>
+ Christian Eggers <ceggers@arri.de>
Paul Eggert <eggert@twinsun.com>
+ Mike Frysinger <vapier@gentoo.org>
Ramon Garcia Fernandez <ramon.garcia.f@gmail.com>
+ Noah Goldstein <goldstein.w.n@gmail.com>
+ Mike Haboustak <haboustak@gmail.com>
+ Frank Heckenbach <f.heckenbach@fh-soft.de>
Klaus Heinz <kamar@ease.rhein-main.de>
+ Ben Hutchings <ben@decadent.org.uk>
+ Cao jin <caoj.fnst@cn.fujitsu.com>
Michael Joosten
+ Christian Jullien <eligis@orange.fr>
Jim Kelton <jim_kelton@tivoli.com>
+ Kaz Kylheku <kaz@kylheku.com>
David Lubbren <uhay@rz.uni-karlsruhe.de>
Tim Magill <tim.magill@telops.gte.com>
Markus Mauhart <qwe123@chello.at>
Greg McGary <greg@mcgary.org>
Thien-Thi Nguyen <ttn@gnuvola.org>
- Thomas Riedl <thomas.riedl@siemens.com>
Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ Enrique Olaizola <enrique_olaizola16@hotmail.com>
+ Ola Olsson <ola1olsson@gmail.com>
+ Jens Rehsack <sno@netbsd.org>
+ Thomas Riedl <thomas.riedl@siemens.com>
+ Jaak Ristioja <jaak@ristioja.ee>
+ Christoph Schulz <develop@kristov.de>
+ Andreas Schwab <schwab@suse.de>
+ spagoveanu <spagoveanu@gmail.com>
Carl Staelin (Princeton University)
Ian Stewartson (Data Logic Limited)
- David A. Wheeler <dwheeler@dwheeler.com>
- David Boyce <dsb@boyski.com>
- Frank Heckenbach <f.heckenbach@fh-soft.de>
- Kaz Kylheku <kaz@kylheku.com>
+ Tobias Stoeckmann <tobias@stoeckmann.org>
+ Sergei Trofimovich <siarheit@google.com>
+ Marc Ullman <marc@mathworks.com>
Christof Warlich <cwarlich@gmx.de>
+ Florian Weimer <fweimer@redhat.com>
+ David A. Wheeler <dwheeler@dwheeler.com>
+ Bernhard M. Wiedemann <bwiedemann@suse.de>
+ Ben Wijen <ben@wijen.net>
+ Jouke Witteveen <j.witteveen@gmail.com>
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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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,<objectlist>)
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 $(<D) && pwd)/$(<F)
+CHECK.args ?=
# $(call MKDIR.cmd,<dirlist>)
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. <http://fsf.org/>
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
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 <http://www.gnu.org/licenses/>.
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
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
-<http://www.gnu.org/licenses/>.
+<https://www.gnu.org/licenses/>.
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
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+<https://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
index dce824b..59f71f5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3212 @@
+2022-10-31 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * build.sh: Allow a "keep-going" mode during builds
+
+2022-10-29 Paul Smith <psmith@gnu.org>
+
+ 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 <eggert@cs.ucla.edu> 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 <psmith@gnu.org>
+
+ * src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once
+ Reported by Dmitry Goncharov <dgoncharov@users.sf.net>.
+
+2022-10-28 Paul Smith <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>.
+
+ * 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 <psmith@gnu.org>
+
+ * src/job.c: [SV 63185] Don't use ifdef with HAVE_DECL_* macros
+
+2022-10-25 Paul Smith <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ Release GNU Make 4.3.92
+ * configure.ac: Modify the release version.
+ * NEWS: Update the version and date.
+
+2022-10-24 Paul Smith <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ * 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 <psmith@gnu.org>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ * src/posixos.c (os_anontmp): If O_TMPFILE fails try dup() method.
+
+2022-10-23 Paul Smith <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [SV 63243] tests: Avoid SIGTERM racing with make error messages
+ Original patch from Frank Heckenbach <f.heckenbach@fh-soft.de>.
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <f.heckenbach@fh-soft.de>.
+
+ * src/main.c (main): Ignore SIGPIPE.
+ * src/posixos.c (osync_clear): Fix a memory leak.
+
+2022-10-18 Paul Smith <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ Rework temp file handling to avoid GNU libc warnings
+ Original patch provided by Paul Eggert <eggert@cs.ucla.edu>.
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <eggert@cs.ucla.edu>.
+
+ * 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 <psmith@gnu.org>
+
+ 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 <juan.guerrero@gmx.de>
+
+ 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 <psmith@gnu.org>
+
+ * src/job.c: [SV 63185] Include sys/loadavg.h if needed.
+
+2022-10-16 Paul Smith <psmith@gnu.org>
+
+ [SV 63215] Remember the random seed for shuffle mode
+ Basic fix provided by James Hilliard <james.hilliard1@gmail.com>.
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [SV 63157] Ensure temporary files are removed when signaled
+ Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
+ 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 <psmith@gnu.org>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ * tests/test_driver.pl (toplevel): [SV 63156] Keep temp env vars
+
+2022-10-03 Paul Smith <psmith@gnu.org>
+
+ 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 <eggert@cs.ucla.edu>.
+
+2022-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <schwab@suse.de> (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 <psmith@gnu.org>
+
+ * src/function.c: Change int to uint to align with gmk_func_ptr
+
+2022-10-01 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * doc/make.texi (Loaded Object API): [SV 63126] Fix typos and examples
+
+2022-10-01 Paul Smith <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <bug-tar@Denis-Excoffier.org>
+ Root cause found by Martin Dorey <Martin.Dorey@hitachivantara.com>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ * configure.ac: [SV 63070] Clean up the test program for posix_spawn.
+
+2022-09-25 Paul Smith <psmith@gnu.org>
+
+ * 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 <eliz@gnu.org>
+
+ 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 <eliz@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * tests/scripts/features/statipattrules: [SV 17374] Add test
+ Verify that double-colon static pattern rules work.
+
+2022-09-20 Paul Smith <psmith@gnu.org>
+
+ [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 <jo@stashed.dev>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ * tests/scripts/targets/WAIT: [SV 63071] Remove possible test races.
+
+2022-09-13 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi (Parallel Disable): Add clarifications.
+ * NEWS: Suggest how to change makefiles that use $(MAKEFLAGS).
+
+2022-09-12 Paul Smith <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <siarheit@google.com>
+
+ [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 <psmith@gnu.org>
+
+ * doc/make.texi (How Make Works): Clarify default goal exceptions.
+
+ * src/shuffle.c: Minor coding changes.
+
+2022-09-11 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ Enhance the make.texi formatting
+ Notes provided by Tzvetelin Katchov <katchov@gnu.org>.
+
+ * doc/make.texi: Remove obsolete @refill statements. Add some breaks
+ to overfull lines. Fix up some example text.
+
+2022-09-10 Paul Smith <psmith@gnu.org>
+
+ Clean up maintMakefile
+ Notes provided by Tzvetelin Katchov <katchov@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ [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 <slyich@gmail.com> 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <katchov@gnu.org>.
+
+2022-09-08 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>.
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * doc/make.texi (Variables/Recursion): [SV 56446] Clarify export docs
+
+2022-08-07 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi (Goals): [SV 51306] Improve MAKECMDGOALS example
+
+2022-08-07 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * doc/make.texi (Remaking Makefiles): [SV 61623] Add optimization
+
+2022-08-03 Paul Smith <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ Add gnulib findprog-in
+
+ Add gnulib concat-filename
+
+ Add gnulib getloadavg
+
+ Initial gnulib-port branch commit
+
+2022-06-19 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ Avoid overwriting buffers with long pathnames
+ Reported, with initial patch, by Gisle Vanem <gvanem@online.no>
+
+ * 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 <psmith@gnu.org>
+
+ * tests/scripts/features/temp_stdin: Remove nested "my"
+ * tests/scripts/features/statipattrules: Remove unset variable refs.
+
+2022-06-04 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * tests/scripts/features/archives: Fix typo
+
+2022-06-04 Sergei Trofimovich <siarheit@google.com>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <goldstein.w.n@gmail.com>
+
+ 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 <goldstein.w.n@gmail.com>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ [SV 62173] Fix archive tests for non-GNU systems
+ Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ 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 <dgoncharov@users.sf.net>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * tests/scripts/features/errors: Fix Perl warnings
+ * tests/scripts/options/dash-f: Ditto.
+
+2022-02-27 Paul Smith <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>.
+
+ 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=<filename> 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<filename> on re-exec.
+
+ Some examples of the rewrite:
+
+ User command line Re-exec command line
+ ----------------- --------------------
+ -f- --temp-stdin=<batch>
+ --file - --temp-stdin=<batch>
+ -f - --makefile a.mk --temp-stdin=<batch> -fa.mk
+ --file=a.mk -fa.mk
+ -fa.mk -fa.mk
+ -Rf a.mk -Rf a.mk
+ -Rf- -R --temp-stdin=<batch>
+
+ * 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 <dgoncharov@users.sf.net>.
+
+2022-02-27 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/variables/MAKE_RESTARTS: Remove TAB chars
+
+ * README.git: Fix compiler options for ASAN
+
+2022-02-27 Paul Smith <psmith@gnu.org>
+
+ 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 (<various>): 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 <psmith@gnu.org>
+
+ * src/main.c: Ensure the stdin temp file is deleted when dying.
+
+2022-02-27 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ [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 <siarheit@google.com>
+ Test added by Paul Smith <psmith@gnu.org>
+
+ * src/main.c (main): Set the mtime of the stdin temporary file.
+ * tests/scripts/features/reinvoke: Add a test.
+
+2022-02-27 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ Ensure buffers are large enough for integer values
+ Issue raised by Sergei Trofimovich <siarheit@google.com>
+
+ * 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 <psmith@gnu.org>
+
+ * <all>: Update copyright notices.
+
+2022-02-06 Paul Smith <psmith@gnu.org>
+
+ * doc/make.1: Use "target" from the SYNOPSIS.
+ Reported by Helge Kreutzmann <debian@helgefjell.de>
+
+2022-02-06 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * Basic.mk.template: Allow arguments to the check target.
+
+2022-02-06 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * tests/scripts/features/double_colon: Update for modern tests.
+
+ * tests/scripts/features/implicit_search: Add -r for safety.
+
+2022-02-06 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ 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 <eggert@cs.ucla.edu>, who saw the report from
+ Lars Ingebrigtsen <https://bugs.gnu.org/53358>.
+
+ * 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 <psmith@gnu.org>
+
+ * tests/scripts/features/implicit_search: [SV 48643] Cleanups.
+
+ * src/implicit.c (pattern_search): Use const ptrs when possible.
+ Change suggested by Joe Filion <joefilion4@gmail.com>
+
+ * 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 <j.witteveen@gmail.com>
+
+ * 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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>.
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * src/read.c (tilde_expand): Put back '/' before returning.
+ Joe Filion <joefilion4@gmail.com> noted that the string is modified,
+ and Henrik Carlqvist <hc94@poolhem.se> noticed that it wasn't put
+ back in all cases.
+
+2021-12-29 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/targets/INTERMEDIATE: Rewrite for new test method
+
+2021-12-29 Paul Smith <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * README.template: Clean up patch submission information
+
+2021-12-19 Jouke Witteveen <j.witteveen@gmail.com>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * src/makeint.h: Compute INTSTR_LENGTH based on size of intmax_t
+ Math suggested by Edward Welbourne <edward.welbourne@qt.io>
+
+2021-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * .gitignore: Ignore patch files.
+
+2021-11-28 U2FsdGVkX1 <u2fsdgvkx1@gmail.com> (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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <j.witteveen@gmail.com>
+
+ 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 <j.witteveen@gmail.com>
+
+ 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 <j.witteveen@gmail.com>
+
+ * src/makeint.h: Removed unused atol declaration
+
+2021-11-27 Paul Smith <psmith@gnu.org>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>:
+
+ 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 <dgoncharov@users.sf.net>
+
+ * doc/make.texi (Special Targets): [SV 61122] Add .SECONDARY example
+
+2021-10-17 Paul Smith <psmith@gnu.org>
+
+ * README.git: Update C version prerequisite
+
+2021-09-20 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * src/default.c (default_variables): Use CPP in PREPROCESS.S.
+
+2021-09-06 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * doc/make.texi (Environment): [SV 60841] Clarify variable exporting.
+
+ * doc/make.texi (Chained Rules): [SV 60904] Clarify intermediate files.
+
+2021-09-06 Paul Smith <psmith@gnu.org>
+
+ 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 <jingxuan.he@inf.ethz.ch>
+
+ * 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * NEWS: Add a few missing attributions
+ * AUTHORS: Add some missing attributions
+
+2021-07-25 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ * make.texi (Reading Makefiles): != creates recursive variables.
+ Reported by Ronald Hoogenboom <RHoogenboom@irdeto.com>.
+
+2021-05-30 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net>
+
+ [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 <dgoncharov@users.sf.net>
+
+ * tests/scripts/targets/INTERMEDIATE: [SV 60188] Add one more test
+
+2021-05-29 Eli Zaretskii <eliz@gnu.org>
+
+ [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 <m_kato@ga2.so-net.ne.jp>.
+
+2021-03-28 Paul Smith <psmith@gnu.org>
+
+ 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 <tobias@stoeckmann.org> (tiny change)
+
+ * src/remake.c (name_mtime): Reserve space for nul in readlink result
+
+2021-03-25 Cao jin <caoj.fnst@cn.fujitsu.com> (tiny change)
+
+ * doc/make.texi (Call Function): Apply consistent formatting
+
+2021-03-25 Pete Dietl <petedietl@gmail.com> (tiny change)
+
+ * src/job.c (child_execute_job): Update gnulib find_in_given_path()
+
+2021-03-25 Mike Frysinger <vapier@gentoo.org> (tiny change)
+
+ * doc/make.texi (Automatic Variables): Relocate the $? example
+
+2021-03-15 Paul Smith <psmith@gnu.org>
+
+ [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 <ken@tossell.net>
+ Regression tests by Dmitry Goncharov <dgoncharov@users.sf.net>
+ Tweaked by Paul Smith <psmith@gnu.org>
+
+ * 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>)
+
+ * 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 <psmith@gnu.org>
+
+ * tests/scripts/features/exec: Small cleanup
+
+2021-03-15 Paul Smith <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ [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 <j.witteveen@gmail.com>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ * doc/make.texi (How Patterns Match): [SV 58639] Fix chaining info.
+
+2020-12-06 Jouke Witteveen <j.witteveen@gmail.com>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * configure.ac: [SV 58836] Copy build.sh to the build directory
+
+2020-12-05 Paul Smith <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ 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 <dgoncharov@users.sf.net>
+
+ [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 <psmith@gnu.org>
+
+ [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 <dgoncharov@users.sf.net> 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 <psmith@gnu.org>
+
+ * src/default.c (default_variables) [AIX]: [SV 59096] Fix ARFLAGS
+ Reported by Dmitry Goncharov <dgoncharov@users.sf.net>, 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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * .ccls: Disable clang compare against static string warning
+
+2020-11-13 Paul Smith <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * doc/make.texi (Include): Update behavior for missing included files
+
+2020-07-19 Paul Smith <psmith@gnu.org>
+
+ * NEWS: [SV 58435] Document minimum C compiler version requirement
+ * configure.ac: Require c99 via AC_PROG_CC_C99
+
+2020-07-19 Paul Smith <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ * 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 <psmith@gnu.org>
+
+ * NEWS: Fix some tortured grammar.
+
+2020-05-03 Paul Smith <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * 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 <kevinb@redhat.com> (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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org>
+
+ 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 <sno@netbsd.org> (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 <psmith@gnu.org>
+
+ [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 <psmith@gnu.org> (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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ * NEWS: Update 4.3 with information on .SILENT / -s
+
+2020-02-29 Eli Zaretskii <eliz@gnu.org>
+
+ * NEWS: Mention the new tcc support.
+
+2020-02-29 Christian Jullien <eligis@orange.fr>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
+
+ 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 <psmith@gnu.org>
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 '<wchar.h>' 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <bug-make@gnu.org>.
+
+* 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 <alex.neyman@auriga.ru> (2005)
+ and Steffen Nurpmeso <steffen@sdaoden.eu> (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 <dgoncharov@users.sf.net>
+
+* 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 <j.witteveen@gmail.com>
+
+* New feature: The $(intcmp ...) function
+ This function allows conditional evaluation controlled by a numerical
+ comparison.
+ Implementation provided by Jouke Witteveen <j.witteveen@gmail.com>
+
+* 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 <sdack@gmx.com>
+
+* 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 <siarheit@google.com>
+
+* 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 <dgoncharov@users.sf.net>
+
+* 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 <dgoncharov@users.sf.net>
+
+* 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 <David.S.Boyce@gmail.com>
+
+* 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 <eligis@orange.fr>
+
+
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 <kkaempf@rmi.de>
* 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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <bug-make@gnu.org> 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 <bug-make@gnu.org>. 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 <help-make@gnu.org>.
+
+If you found a bug, you can send a bug reports to <bug-make@gnu.org>.
+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 <bug-make@gnu.org>: 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 <bug-make@gnu.org> 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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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:
"<tab>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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <malloc.h> 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 <http://www.gnu.org/licenses/>.
+this program. If not, see <https://www.gnu.org/licenses/>.
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 <tromey@cygnus.com>.
#
# 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 <config-patches@gnu.org>.
+# 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 <stdarg.h>
+ /* 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' </usr/options/cb.name`
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
elif /bin/uname -X 2>/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 <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# 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" <<EOF
@@ -1601,7 +1693,7 @@ main ()
}
EOF
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/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 <<EOF
@@ -1626,9 +1718,17 @@ This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions 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
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1656,6 +1756,7 @@ UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 0f2234c..dba16e8 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,12 +1,14 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2019 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2019-06-30'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
# 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
@@ -33,7 +35,7 @@ timestamp='2019-06-30'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,6 +52,13 @@ timestamp='2019-06-30'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
+# 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="\
@@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-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."
@@ -112,9 +121,11 @@ esac
# Split fields of configuration type
# shellcheck disable=SC2162
+saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
+IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
@@ -124,28 +135,27 @@ case $1 in
;;
*-*-*-*)
basic_machine=$field1-$field2
- os=$field3-$field4
+ basic_os=$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
- | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
- os=$maybe_os
+ basic_os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
- os=linux-android
+ basic_os=linux-android
;;
*)
basic_machine=$field1-$field2
- os=$field3
+ basic_os=$field3
;;
esac
;;
@@ -154,7 +164,7 @@ case $1 in
case $field1-$field2 in
decstation-3100)
basic_machine=mips-dec
- os=
+ basic_os=
;;
*-*)
# Second component is usually, but not always the OS
@@ -162,7 +172,11 @@ case $1 in
# Prevent following clause from handling this valid os
sun*os*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
+ ;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -175,11 +189,11 @@ case $1 in
| microblaze* | sim | cisco \
| oki | wec | wrs | winbond)
basic_machine=$field1-$field2
- os=
+ basic_os=
;;
*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
esac
;;
@@ -191,447 +205,451 @@ case $1 in
case $field1 in
386bsd)
basic_machine=i386-pc
- os=bsd
+ basic_os=bsd
;;
a29khif)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
adobe68k)
basic_machine=m68010-adobe
- os=scout
+ basic_os=scout
;;
alliant)
basic_machine=fx80-alliant
- os=
+ basic_os=
;;
altos | altos3068)
basic_machine=m68k-altos
- os=
+ basic_os=
;;
am29k)
basic_machine=a29k-none
- os=bsd
+ basic_os=bsd
;;
amdahl)
basic_machine=580-amdahl
- os=sysv
+ basic_os=sysv
;;
amiga)
basic_machine=m68k-unknown
- os=
+ basic_os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
- os=amigaos
+ basic_os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
- os=sysv4
+ basic_os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
- os=sysv
+ basic_os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
- os=bsd
+ basic_os=bsd
;;
aros)
basic_machine=i386-pc
- os=aros
+ basic_os=aros
;;
aux)
basic_machine=m68k-apple
- os=aux
+ basic_os=aux
;;
balance)
basic_machine=ns32k-sequent
- os=dynix
+ basic_os=dynix
;;
blackfin)
basic_machine=bfin-unknown
- os=linux
+ basic_os=linux
;;
cegcc)
basic_machine=arm-unknown
- os=cegcc
+ basic_os=cegcc
;;
convex-c1)
basic_machine=c1-convex
- os=bsd
+ basic_os=bsd
;;
convex-c2)
basic_machine=c2-convex
- os=bsd
+ basic_os=bsd
;;
convex-c32)
basic_machine=c32-convex
- os=bsd
+ basic_os=bsd
;;
convex-c34)
basic_machine=c34-convex
- os=bsd
+ basic_os=bsd
;;
convex-c38)
basic_machine=c38-convex
- os=bsd
+ basic_os=bsd
;;
cray)
basic_machine=j90-cray
- os=unicos
+ basic_os=unicos
;;
crds | unos)
basic_machine=m68k-crds
- os=
+ basic_os=
;;
da30)
basic_machine=m68k-da30
- os=
+ basic_os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
- os=
+ basic_os=
;;
delta88)
basic_machine=m88k-motorola
- os=sysv3
+ basic_os=sysv3
;;
dicos)
basic_machine=i686-pc
- os=dicos
+ basic_os=dicos
;;
djgpp)
basic_machine=i586-pc
- os=msdosdjgpp
+ basic_os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
- os=ebmon
+ basic_os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
- os=ose
+ basic_os=ose
;;
gmicro)
basic_machine=tron-gmicro
- os=sysv
+ basic_os=sysv
;;
go32)
basic_machine=i386-pc
- os=go32
+ basic_os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
- os=hms
+ basic_os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
- os=xray
+ basic_os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
- os=hms
+ basic_os=hms
;;
harris)
basic_machine=m88k-harris
- os=sysv3
+ basic_os=sysv3
;;
hp300 | hp300hpux)
basic_machine=m68k-hp
- os=hpux
+ basic_os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
- os=bsd
+ basic_os=bsd
;;
hppaosf)
basic_machine=hppa1.1-hp
- os=osf
+ basic_os=osf
;;
hppro)
basic_machine=hppa1.1-hp
- os=proelf
+ basic_os=proelf
;;
i386mach)
basic_machine=i386-mach
- os=mach
+ basic_os=mach
;;
isi68 | isi)
basic_machine=m68k-isi
- os=sysv
+ basic_os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
- os=linux
+ basic_os=linux
;;
magnum | m3230)
basic_machine=mips-mips
- os=sysv
+ basic_os=sysv
;;
merlin)
basic_machine=ns32k-utek
- os=sysv
+ basic_os=sysv
;;
mingw64)
basic_machine=x86_64-pc
- os=mingw64
+ basic_os=mingw64
;;
mingw32)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
- os=mingw32ce
+ basic_os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
morphos)
basic_machine=powerpc-unknown
- os=morphos
+ basic_os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
- os=moxiebox
+ basic_os=moxiebox
;;
msdos)
basic_machine=i386-pc
- os=msdos
+ basic_os=msdos
;;
msys)
basic_machine=i686-pc
- os=msys
+ basic_os=msys
;;
mvs)
basic_machine=i370-ibm
- os=mvs
+ basic_os=mvs
;;
nacl)
basic_machine=le32-unknown
- os=nacl
+ basic_os=nacl
;;
ncr3000)
basic_machine=i486-ncr
- os=sysv4
+ basic_os=sysv4
;;
netbsd386)
basic_machine=i386-pc
- os=netbsd
+ basic_os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
- os=linux
+ basic_os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
- os=newsos
+ basic_os=newsos
;;
news1000)
basic_machine=m68030-sony
- os=newsos
+ basic_os=newsos
;;
necv70)
basic_machine=v70-nec
- os=sysv
+ basic_os=sysv
;;
nh3000)
basic_machine=m68k-harris
- os=cxux
+ basic_os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
- os=cxux
+ basic_os=cxux
;;
nindy960)
basic_machine=i960-intel
- os=nindy
+ basic_os=nindy
;;
mon960)
basic_machine=i960-intel
- os=mon960
+ basic_os=mon960
;;
nonstopux)
basic_machine=mips-compaq
- os=nonstopux
+ basic_os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
- os=os400
+ basic_os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
- os=ose
+ basic_os=ose
;;
os68k)
basic_machine=m68k-none
- os=os68k
+ basic_os=os68k
;;
paragon)
basic_machine=i860-intel
- os=osf
+ basic_os=osf
;;
parisc)
basic_machine=hppa-unknown
- os=linux
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
;;
pw32)
basic_machine=i586-unknown
- os=pw32
+ basic_os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
- os=rdos
+ basic_os=rdos
;;
rdos32)
basic_machine=i386-pc
- os=rdos
+ basic_os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
sa29200)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
sei)
basic_machine=mips-sei
- os=seiux
+ basic_os=seiux
;;
sequent)
basic_machine=i386-sequent
- os=
+ basic_os=
;;
sps7)
basic_machine=m68k-bull
- os=sysv2
+ basic_os=sysv2
;;
st2000)
basic_machine=m68k-tandem
- os=
+ basic_os=
;;
stratus)
basic_machine=i860-stratus
- os=sysv4
+ basic_os=sysv4
;;
sun2)
basic_machine=m68000-sun
- os=
+ basic_os=
;;
sun2os3)
basic_machine=m68000-sun
- os=sunos3
+ basic_os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
- os=sunos4
+ basic_os=sunos4
;;
sun3)
basic_machine=m68k-sun
- os=
+ basic_os=
;;
sun3os3)
basic_machine=m68k-sun
- os=sunos3
+ basic_os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4)
basic_machine=sparc-sun
- os=
+ basic_os=
;;
sun4os3)
basic_machine=sparc-sun
- os=sunos3
+ basic_os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
- os=solaris2
+ basic_os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
- os=
+ basic_os=
;;
sv1)
basic_machine=sv1-cray
- os=unicos
+ basic_os=unicos
;;
symmetry)
basic_machine=i386-sequent
- os=dynix
+ basic_os=dynix
;;
t3e)
basic_machine=alphaev5-cray
- os=unicos
+ basic_os=unicos
;;
t90)
basic_machine=t90-cray
- os=unicos
+ basic_os=unicos
;;
toad1)
basic_machine=pdp10-xkl
- os=tops20
+ basic_os=tops20
;;
tpf)
basic_machine=s390x-ibm
- os=tpf
+ basic_os=tpf
;;
udi29k)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
ultra3)
basic_machine=a29k-nyu
- os=sym1
+ basic_os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
- os=none
+ basic_os=none
;;
vaxv)
basic_machine=vax-dec
- os=sysv
+ basic_os=sysv
;;
vms)
basic_machine=vax-dec
- os=vms
+ basic_os=vms
;;
vsta)
basic_machine=i386-pc
- os=vsta
+ basic_os=vsta
;;
vxworks960)
basic_machine=i960-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
- os=vxworks
+ basic_os=vxworks
;;
xbox)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
ymp)
basic_machine=ymp-cray
- os=unicos
+ basic_os=unicos
;;
*)
basic_machine=$1
- os=
+ basic_os=
;;
esac
;;
@@ -683,17 +701,17 @@ case $basic_machine in
bluegene*)
cpu=powerpc
vendor=ibm
- os=cnk
+ basic_os=cnk
;;
decsystem10* | dec10*)
cpu=pdp10
vendor=dec
- os=tops10
+ basic_os=tops10
;;
decsystem20* | dec20*)
cpu=pdp10
vendor=dec
- os=tops20
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
@@ -703,7 +721,7 @@ case $basic_machine in
dpx2*)
cpu=m68k
vendor=bull
- os=sysv3
+ basic_os=sysv3
;;
encore | umax | mmax)
cpu=ns32k
@@ -712,7 +730,7 @@ case $basic_machine in
elxsi)
cpu=elxsi
vendor=elxsi
- os=${os:-bsd}
+ basic_os=${basic_os:-bsd}
;;
fx2800)
cpu=i860
@@ -725,7 +743,7 @@ case $basic_machine in
h3050r* | hiux*)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
cpu=hppa1.0
@@ -768,36 +786,36 @@ case $basic_machine in
i*86v32)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
- os=sysv32
+ basic_os=sysv32
;;
i*86v4*)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
- os=sysv4
+ basic_os=sysv4
;;
i*86v)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
- os=sysv
+ basic_os=sysv
;;
i*86sol2)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
- os=solaris2
+ basic_os=solaris2
;;
j90 | j90-cray)
cpu=j90
vendor=cray
- os=${os:-unicos}
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
cpu=mips
vendor=sgi
- case $os in
+ case $basic_os in
irix*)
;;
*)
- os=irix4
+ basic_os=irix4
;;
esac
;;
@@ -808,26 +826,26 @@ case $basic_machine in
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
- os=mint
+ basic_os=mint
;;
news-3600 | risc-news)
cpu=mips
vendor=sony
- os=newsos
+ basic_os=newsos
;;
next | m*-next)
cpu=m68k
vendor=next
- case $os in
+ case $basic_os in
openstep*)
;;
nextstep*)
;;
ns2*)
- os=nextstep2
+ basic_os=nextstep2
;;
*)
- os=nextstep3
+ basic_os=nextstep3
;;
esac
;;
@@ -838,12 +856,12 @@ case $basic_machine in
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
- os=proelf
+ basic_os=proelf
;;
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
pbd)
cpu=sparc
@@ -880,12 +898,12 @@ case $basic_machine in
sde)
cpu=mipsisa32
vendor=sde
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
simso-wrs)
cpu=sparclite
vendor=wrs
- os=vxworks
+ basic_os=vxworks
;;
tower | tower-32)
cpu=m68k
@@ -902,7 +920,7 @@ case $basic_machine in
w89k-*)
cpu=hppa1.1
vendor=winbond
- os=proelf
+ basic_os=proelf
;;
none)
cpu=none
@@ -919,9 +937,11 @@ case $basic_machine in
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
+ IFS=$saved_IFS
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@@ -955,11 +975,11 @@ case $cpu-$vendor in
# some cases the only manufacturer, in others, it is the most popular.
craynv-unknown)
vendor=cray
- os=${os:-unicosmp}
+ basic_os=${basic_os:-unicosmp}
;;
c90-unknown | c90-cray)
vendor=cray
- os=${os:-unicos}
+ basic_os=${Basic_os:-unicos}
;;
fx80-unknown)
vendor=alliant
@@ -1000,10 +1020,15 @@ case $cpu-$vendor in
;;
# Here we normalize CPU types with a missing or matching vendor
+ armh-unknown | armh-alt)
+ cpu=armv7l
+ vendor=alt
+ basic_os=${basic_os:-linux-gnueabihf}
+ ;;
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
- os=${os:-bosx}
+ basic_os=${basic_os:-bosx}
;;
# Here we normalize CPU types irrespective of the vendor
@@ -1012,7 +1037,7 @@ case $cpu-$vendor in
;;
blackfin-*)
cpu=bfin
- os=linux
+ basic_os=linux
;;
c54x-*)
cpu=tic54x
@@ -1025,7 +1050,7 @@ case $cpu-$vendor in
;;
e500v[12]-*)
cpu=powerpc
- os=$os"spe"
+ basic_os=${basic_os}"spe"
;;
mips3*-*)
cpu=mips64
@@ -1035,7 +1060,7 @@ case $cpu-$vendor in
;;
m68knommu-*)
cpu=m68k
- os=linux
+ basic_os=linux
;;
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
@@ -1045,7 +1070,7 @@ case $cpu-$vendor in
;;
parisc-*)
cpu=hppa
- os=linux
+ basic_os=linux
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
@@ -1101,11 +1126,14 @@ case $cpu-$vendor in
xscale-* | xscalee[bl]-*)
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
+ arm64-* | aarch64le-*)
+ cpu=aarch64
+ ;;
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
crisv32-* | etraxfs*-*)
cpu=crisv32
@@ -1116,7 +1144,7 @@ case $cpu-$vendor in
vendor=axis
;;
crx-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
neo-tandem)
cpu=neo
@@ -1138,16 +1166,12 @@ case $cpu-$vendor in
cpu=nsx
vendor=tandem
;;
- s390-*)
- cpu=s390
- vendor=ibm
- ;;
- s390x-*)
- cpu=s390x
- vendor=ibm
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
tile*-*)
- os=${os:-linux-gnu}
+ basic_os=${basic_os:-linux-gnu}
;;
*)
@@ -1163,8 +1187,8 @@ case $cpu-$vendor in
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
- | arc | arceb \
- | arm | arm[lb]e | arme[lb] | armv* \
+ | arc | arceb | arc32 | arc64 \
+ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
| ba \
@@ -1183,6 +1207,7 @@ case $cpu-$vendor in
| k1om \
| le32 | le64 \
| lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
@@ -1201,9 +1226,13 @@ case $cpu-$vendor in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
@@ -1227,8 +1256,9 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
- | riscv | riscv32 | riscv64 \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
| rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
| score \
| sh | shl \
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
@@ -1238,6 +1268,7 @@ case $cpu-$vendor in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \
| tahoe \
+ | thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
@@ -1275,8 +1306,49 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x$os != x ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+ ;;
+ os2-emx)
+ kernel=os2
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ IFS=$saved_IFS
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+ ;;
+ linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
@@ -1288,7 +1360,7 @@ case $os in
os=cnk
;;
solaris1 | solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
;;
solaris)
os=solaris2
@@ -1296,9 +1368,6 @@ case $os in
unixware*)
os=sysv4.2uw
;;
- gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
# es1800 is here to avoid being matched by es* (a different OS)
es1800*)
os=ose
@@ -1320,12 +1389,9 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- ;;
- sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;;
- scout)
+ sco*v* | scout)
# Don't match below
;;
sco*)
@@ -1334,78 +1400,25 @@ case $os in
psos*)
os=psos
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # sysv* is not here because it comes later, after sysvr4.
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- | sym* | kopensolaris* | plan9* \
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* | twizzler* \
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- | knetbsd* | mirbsd* | netbsd* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
- | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
- | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- | linux-newlib* | linux-musl* | linux-uclibc* \
- | 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* | superux* | rtmk* | 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)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
qnx*)
- case $cpu in
- x86 | i*86)
- ;;
- *)
- os=nto-$os
- ;;
- esac
+ os=qnx
;;
hiux*)
os=hiuxwe2
;;
- nto-qnx*)
- ;;
- nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- sim | xray | os68k* | v88r* \
- | windows* | osx | abug | netware* | os9* \
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- ;;
- linux-dietlibc)
- os=linux-dietlibc
- ;;
- linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
lynx*178)
os=lynxos178
;;
lynx*5)
os=lynxos5
;;
+ lynxos*)
+ # don't get caught up in next wildcard
+ ;;
lynx*)
os=lynxos
;;
- mac*)
+ mac[0-9]*)
os=`echo "$os" | sed -e 's|mac|macos|'`
;;
opened*)
@@ -1452,7 +1465,7 @@ case $os in
;;
# Preserve the version number of sinix5.
sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ os=`echo "$os" | sed -e 's|sinix|sysv|'`
;;
sinix*)
os=sysv4
@@ -1475,18 +1488,12 @@ case $os in
sysvr4)
os=sysv4
;;
- # This must come after sysvr4.
- sysv*)
- ;;
ose*)
os=ose
;;
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
- zvmoe)
- os=zvmoe
- ;;
dicos*)
os=dicos
;;
@@ -1503,19 +1510,11 @@ case $os in
;;
esac
;;
- nacl*)
- ;;
- ios)
- ;;
- none)
- ;;
- *-eabi)
- ;;
*)
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&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 <drepper@gnu.ai.mit.edu>, 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 <pinard@iro.umontreal.ca>, 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 <tege@matematik.su.se>
+ % 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
# 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
# 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
index 553e9d9..30ca0b2 100755..100644
--- 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 <http://www.gnu.org/licenses/>.
+:: with this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+rem with this program. If not, see <https://www.gnu.org/licenses/>.
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 <bug-make@gnu.org>.
#
#
-# 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</dev/null; fi
+if (exec 3>&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 <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#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 <bug-make@gnu.org>.
-GNU make home page: <http://www.gnu.org/software/make/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>.
+GNU Make home page: <https://www.gnu.org/software/make/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>.
_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 <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#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 <stdio.h>
-#include <stdlib.h>
-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 <conftest.val; ac_retval=0
-else
- ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
- fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
+ ac_save_ac_compile="$ac_compile"
+ if test -n "$ac_compile_for_check_decl"; then
+ ac_compile="$ac_compile_for_check_decl"
+ fi
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $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,32 +2333,441 @@ 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"
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+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
@@ -3060,12 +2778,12 @@ for ac_var in $ac_precious_vars; do
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;}
+ { 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)
- { $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;}
+ { 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=: ;;
,);;
*)
@@ -3074,24 +2792,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
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;}
+ { 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
- { $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;}
+ { 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
- { $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;}
+ { 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=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) 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
@@ -3101,11 +2819,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
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
+ { 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. ##
@@ -3122,34 +2841,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# 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
-
-# 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.
-
ac_config_headers="$ac_config_headers src/config.h"
@@ -3161,10 +2852,12 @@ ac_config_headers="$ac_config_headers src/config.h"
# 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__api_version='1.16'
-# Find a good install program. We prefer a C program (faster),
+
+
+ # 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
@@ -3178,20 +2871,25 @@ am__api_version='1.16'
# 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; }
+{ 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 ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+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
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ 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/* ) ;;
@@ -3201,13 +2899,13 @@ case $as_dir/ in #((
# 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,34 +3862,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
@@ -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 <stdio.h>
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 <stdarg.h>
-#include <stdio.h>
-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,536 +4800,175 @@ 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 <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#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 <ac_nonexistent.h>
-_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
-
+ 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
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
- done
- ac_cv_prog_CPP=$CPP
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $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 <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#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 <ac_nonexistent.h>
-_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
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
- $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
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
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
+ { 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 <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+# define __EXTENSIONS__ 1
+ $ac_includes_default
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 <string.h>
-
-_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 <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#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)))
+ #include <wchar.h>
+ 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
-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_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
-
-# 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
-
-fi
-
-done
-
-
-
- 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
-
-
- if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-
-$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
-
- fi
-
+if ac_fn_c_try_compile "$LINENO"
+then :
- { $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
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$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_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
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
- $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
- $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
- $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
- $as_echo "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 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. */
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
- #include <wchar.h>
- mbstate_t x;
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
- #define _XOPEN_SOURCE 500
- #include <wchar.h>
- mbstate_t x;
-int
-main ()
-{
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
- ;
- 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
+else $as_nop
+ MINIX=
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
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
- $as_echo "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+fi
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -5322,11 +4978,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
@@ -5334,11 +4991,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
@@ -5349,11 +5010,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
@@ -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,8 +5287,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
@@ -5610,25 +5296,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;}
+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.
-$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 <stdarg.h>
-#include <stdio.h>
-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,18 +5973,375 @@ 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
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+ case "$host_os" in
+ openbsd*)
+printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
- { $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
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5
+printf %s "checking for Minix Amsterdam compiler... " >&6; }
+if test ${gl_cv_c_amsterdam_compiler+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6066,17 +6352,18 @@ Amsterdam
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Amsterdam" >/dev/null 2>&1; then :
+ $EGREP "Amsterdam" >/dev/null 2>&1
+then :
gl_cv_c_amsterdam_compiler=yes
-else
+else $as_nop
gl_cv_c_amsterdam_compiler=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5
-$as_echo "$gl_cv_c_amsterdam_compiler" >&6; }
+{ 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
@@ -6092,11 +6379,12 @@ $as_echo "$gl_cv_c_amsterdam_compiler" >&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
-{ $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
@@ -6104,11 +6392,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="${ac_tool_prefix}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
@@ -6119,11 +6411,11 @@ 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
@@ -6132,11 +6424,12 @@ 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
+{ 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
@@ -6144,11 +6437,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_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
@@ -6159,11 +6456,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_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
if test "x$ac_ct_AR" = x; then
@@ -6171,8 +6468,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
AR=$ac_ct_AR
@@ -6194,11 +6491,12 @@ fi
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
@@ -6206,11 +6504,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
@@ -6221,11 +6523,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
@@ -6234,11 +6536,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
@@ -6246,11 +6549,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
@@ -6261,11 +6568,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
@@ -6273,8 +6580,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
@@ -6287,67 +6594,373 @@ 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 <sys/types.h>
+ /* 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 <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_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 <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_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 <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_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 <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_large_files=1; break
+fi
+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) :
+
+ # Check whether --enable-year2038 was given.
+if test ${enable_year2038+y}
+then :
+ enableval=$enable_year2038;
+fi
+
+ 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 <time.h>
+ /* 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 <time.h>
+ /* 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
+
+
+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
+
# 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 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:
+
+
# 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:
+
+
@@ -6356,14 +6969,15 @@ fi
# Check whether --enable-cross-guesses was given.
-if test "${enable_cross_guesses+set}" = set; then :
+if test ${enable_cross_guesses+y}
+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;}
+ { 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
+else $as_nop
gl_cross_guesses=conservative
fi
@@ -6378,237 +6992,29 @@ fi
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
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $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
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
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
# 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
+{ 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 <alloca.h>
int
-main ()
+main (void)
{
char *p = (char *) alloca (2 * sizeof (int));
if (p) return 0;
@@ -6616,52 +7022,52 @@ char *p = (char *) alloca (2 * sizeof (int));
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_working_alloca_h=yes
-else
+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
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
+{ 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
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
fi
-{ $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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+printf %s "checking for alloca... " >&6; }
+if test ${ac_cv_func_alloca_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test $ac_cv_working_alloca_h = yes; then
+ ac_cv_func_alloca_works=yes
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
+#include <stdlib.h>
+#include <stddef.h>
+#ifndef alloca
+# ifdef __GNUC__
+# define alloca __builtin_alloca
+# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
+# ifdef __cplusplus
+extern "C"
# endif
+void *alloca (size_t);
# endif
#endif
int
-main ()
+main (void)
{
char *p = (char *) alloca (1);
if (p) return 0;
@@ -6669,20 +7075,22 @@ char *p = (char *) alloca (1);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_alloca_works=yes
-else
+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
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+printf "%s\n" "$ac_cv_func_alloca_works" >&6; }
+fi
if test $ac_cv_func_alloca_works = yes; then
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h
else
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -6696,58 +7104,19 @@ else
ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h
-{ $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
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_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
-fi
-rm -f conftest*
-
-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
-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 :
+{ 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
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -6768,9 +7137,10 @@ main (int argc, char **argv)
return find_stack_direction (0, argc + !argv + 20) < 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_c_stack_direction=1
-else
+else $as_nop
ac_cv_c_stack_direction=-1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -6778,1005 +7148,120 @@ 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_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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+printf "%s\n" "$ac_cv_c_stack_direction" >&6; }
+printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h
fi
+ ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess"
+if test "x$ac_cv_func_eaccess" = xyes
+then :
+else $as_nop
- 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
-_ACEOF
+printf "%s\n" "#define eaccess access" >>confdefs.h
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
+ HAVE_DECL_GETLOADAVG=1;
- 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
-_ACEOF
-
-fi
-
-done
-
-
- { $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
- # <bug-gnulib@gnu.org>.
- 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
+ GL_GNULIB_GETLOADAVG=0
- { $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 <<EOF > conftestd1a/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
- cat <<EOF > conftestd1b/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include <stdio.h>
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
- cat <<EOF > 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"
+{ 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. */
-#include <conftest.h>
-_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 <conftest.h>
-_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 <errno.h>
-#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 <errno.h>" >&5
-$as_echo_n "checking absolute name of <errno.h>... " >&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 <errno.h>
-_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 <errno.h>
-#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 <errno.h>
-#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 <errno.h>
-/* The following two lines are a workaround against an autoconf-2.52 bug. */
-#include <stdio.h>
-#include <stdlib.h>
-"; 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 <errno.h>
-#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 <errno.h>
-#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 <errno.h>
-/* The following two lines are a workaround against an autoconf-2.52 bug. */
-#include <stdio.h>
-#include <stdlib.h>
-"; 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 <errno.h>
-#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 <errno.h>
-#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 <errno.h>
-/* The following two lines are a workaround against an autoconf-2.52 bug. */
-#include <stdio.h>
-#include <stdlib.h>
-"; 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 ()
+main (void)
{
-
- char buf[100];
- char x = *strerror_r (0, buf, sizeof buf);
- char *p = strerror_r (0, buf, sizeof buf);
- return !p || x;
-
+(void) strchr;
;
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;
-
-
-
+if ac_fn_c_try_compile "$LINENO"
+then :
-
-
-
-
-
-
-
-
- { $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
+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 <sys/types.h>
- #include <sys/stat.h>
- #if HAVE_UNISTD_H
- # include <unistd.h>
- #else /* on Windows with MSVC */
- # include <io.h>
- # include <stdlib.h>
- # defined sleep(n) _sleep ((n) * 1000)
- #endif
- #include <fcntl.h>
- #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
- };
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
int
-main ()
+main (void)
{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
- 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
+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
-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
-
+ break
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
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
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;
-
-
-
-
-
+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
@@ -7789,26 +7274,42 @@ MicrosoftCompiler
_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'
+ $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
+else $as_nop
gl_asmext='s'
gl_c_asm_opt='-S'
fi
-rm -f conftest*
+rm -rf 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
+ { 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 )
@@ -7833,7 +7334,8 @@ else
#endif
_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. */
#if defined __ILP32__ || defined _ILP32
@@ -7843,16 +7345,17 @@ if ac_fn_c_try_compile "$LINENO"; then :
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=x86_64-x32
-else
+else $as_nop
gl_cv_host_cpu_c_abi=x86_64
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
gl_cv_host_cpu_c_abi=i386
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
;;
alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
@@ -7875,7 +7378,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_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. */
#if defined __ILP32__ || defined _ILP32
@@ -7885,13 +7389,14 @@ if ac_fn_c_try_compile "$LINENO"; then :
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=arm64-ilp32
-else
+else $as_nop
gl_cv_host_cpu_c_abi=arm64
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
# 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
@@ -7909,7 +7414,7 @@ else
{ { 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
+ 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
@@ -7919,7 +7424,7 @@ else
rm -f conftest*
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
;;
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
@@ -7934,12 +7439,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=hppa64
-else
+else $as_nop
gl_cv_host_cpu_c_abi=hppa
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
;;
ia64* )
@@ -7954,12 +7460,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=ia64-ilp32
-else
+else $as_nop
gl_cv_host_cpu_c_abi=ia64
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
;;
mips* )
@@ -7974,9 +7481,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=mips64
-else
+else $as_nop
# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
# may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
# In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
@@ -7990,14 +7498,15 @@ else
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=mipsn32
-else
+else $as_nop
gl_cv_host_cpu_c_abi=mips
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
;;
powerpc* )
@@ -8009,14 +7518,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# be generating 64-bit code.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __powerpc64__ || defined _ARCH_PPC64
+#if defined __powerpc64__ || defined __LP64__
int ok;
#else
error fail
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+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
@@ -8028,17 +7538,18 @@ if ac_fn_c_try_compile "$LINENO"; then :
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=powerpc64-elfv2
-else
+else $as_nop
gl_cv_host_cpu_c_abi=powerpc64
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
-else
+else $as_nop
gl_cv_host_cpu_c_abi=powerpc
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
;;
rs6000 )
@@ -8056,12 +7567,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cpu=riscv64
-else
+else $as_nop
cpu=riscv32
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
# There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
# Size of 'long' and 'void *':
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8073,12 +7585,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
main_abi=lp64
-else
+else $as_nop
main_abi=ilp32
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
# Float ABIs:
# __riscv_float_abi_double:
# 'float' and 'double' are passed in floating-point registers.
@@ -8095,9 +7608,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
float_abi=d
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#if defined __riscv_float_abi_single
@@ -8107,15 +7621,16 @@ else
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
float_abi=f
-else
+else $as_nop
float_abi=''
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
gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
;;
@@ -8131,12 +7646,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=s390x
-else
+else $as_nop
gl_cv_host_cpu_c_abi=s390
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
;;
sparc | sparc64 )
@@ -8151,12 +7667,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi=sparc64
-else
+else $as_nop
gl_cv_host_cpu_c_abi=sparc
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
;;
*)
@@ -8165,8 +7682,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
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; }
+{ 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"
@@ -8190,1757 +7707,264 @@ EOF
-
-
-
-
-
-
-
-
-
-
- if test $gl_cv_have_include_next = yes; then
- gl_cv_next_limits_h='<'limits.h'>'
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <limits.h>" >&5
-$as_echo_n "checking absolute name of <limits.h>... " >&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 <limits.h>
-_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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit off_t" >&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. */
-#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
- #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
- #endif
- #include <limits.h>
- long long llm = LLONG_MAX;
- int wb = WORD_BIT;
- int ullw = ULLONG_WIDTH;
+#include <sys/types.h>
+ int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_header_limits_width=yes
-else
- gl_cv_header_limits_width=no
+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.$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
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- 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
+{ 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 <sys/types.h>
+ struct stat buf;
+ int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1];
int
-main ()
+main (void)
{
-#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
+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.$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_func_malloc_posix" >&5
-$as_echo "$gl_cv_func_malloc_posix" >&6; }
+{ 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 :
+printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h
+fi
- gl_cv_c_multiarch=no
+ { 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. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
+#include <stdbool.h>
-_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
+ /* "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. */
-{ $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 <stdbool.h>
-
- #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
+ #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;
int
-main ()
+main (void)
{
- 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);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_header_stdbool_h=yes
-else
+else $as_nop
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 <stddef.h>
- 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
+rm -f core conftest.err conftest.$ac_objext conftest.beam 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+printf "%s\n" "$ac_cv_header_stdbool_h" >&6; }
-$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: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- 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: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-#endif
-#include <wchar.h>
- 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 <stdint.h>" >&5
-$as_echo_n "checking absolute name of <stdint.h>... " >&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 <stdint.h>
-_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'>'
+ { 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
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_stdint_h
+ gl_cv_cc_wallow=none
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 <stdint.h>
-/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
-#if !(defined WCHAR_MIN && defined WCHAR_MAX)
-#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
-#endif
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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 <limits.h> /* 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
+ rm -f conftest*
-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 <stdint.h>
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-
-#include <stdio.h>
-#include <string.h>
-#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 <stdint.h>
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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 <stdint.h>
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-#include <limits.h>"; 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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-#include <limits.h>"; 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
-
-
+{ 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
- 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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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
+ 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
- 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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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
+ rm -f conftest.c conftest.out
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 <string.h>
- #include <errno.h>
-
-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 <string.h>" >&5
-$as_echo_n "checking absolute name of <string.h>... " >&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 <string.h>
-_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 <sys/types.h>" >&5
-$as_echo_n "checking absolute name of <sys/types.h>... " >&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 <sys/types.h>
-_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
-
@@ -9965,41 +7989,11 @@ fi
- 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
+ gl_source_base='lib'
+ gl_source_base_prefix=
if test $ac_cv_func_alloca_works = no; then
@@ -10008,11 +8002,12 @@ $as_echo "#define GNULIB_TEST_ACCESS 1" >>confdefs.h
# 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
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5
+printf %s "checking for alloca as a compiler built-in... " >&6; }
+if test ${gl_cv_rpl_alloca+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10023,38 +8018,30 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Need own alloca" >/dev/null 2>&1; then :
+ $EGREP "Need own alloca" >/dev/null 2>&1
+then :
gl_cv_rpl_alloca=yes
-else
+else $as_nop
gl_cv_rpl_alloca=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5
-$as_echo "$gl_cv_rpl_alloca" >&6; }
+{ 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 "#define HAVE_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h
- ALLOCA_H=alloca.h
+ GL_GENERATE_ALLOCA_H=true
else
- ALLOCA_H=
+ GL_GENERATE_ALLOCA_H=false
fi
else
- ALLOCA_H=alloca.h
+ GL_GENERATE_ALLOCA_H=true
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
@@ -10066,696 +8053,43 @@ 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
- fi
-
-
-
- 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
- # <bug-gnulib@gnu.org>.
- 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
+ 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
-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 <errno.h>
- #include <fcntl.h>
- #include <limits.h>
- #include <sys/resource.h>
- #include <unistd.h>
- #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 <error.h>
-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 <errno.h>
- #include <fcntl.h>
- #include <limits.h>
- #include <sys/resource.h>
- #include <unistd.h>
- #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 <fcntl.h>
-#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
-else
- gl_cv_func_fcntl_f_dupfd_cloexec=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_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
-
-
- if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext"
-
- 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 <fcntl.h>" >&5
-$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
-if ${gl_cv_next_fcntl_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <fcntl.h>
-_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='\/'
;;
+ *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;;
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'"'
-
-
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #include <unistd.h>
-int
-main ()
-{
-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
+ if $GL_GENERATE_ALLOCA_H; then
+ GL_GENERATE_ALLOCA_H_TRUE=
+ GL_GENERATE_ALLOCA_H_FALSE='#'
else
- gl_cv_func_getdtablesize_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
-
- ;;
- esac
-
+ GL_GENERATE_ALLOCA_H_TRUE='#'
+ GL_GENERATE_ALLOCA_H_FALSE=
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
+:
+ 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 $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext"
-
- :
- fi
- GNULIB_GETDTABLESIZE=1
-$as_echo "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h
-
@@ -10769,9 +8103,10 @@ gl_save_LIBS=$LIBS
# 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 :
+if test "x$ac_cv_func_getloadavg" = xyes
+then :
-else
+else $as_nop
gl_func_getloadavg_done=no
# Some systems with -lutil have (and need) -lkvm as well, some do not.
@@ -10780,11 +8115,12 @@ else
# 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
+ { 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
@@ -10793,38 +8129,38 @@ 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 elf_begin ();
int
-main ()
+main (void)
{
return elf_begin ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_elf_elf_begin=yes
-else
+else $as_nop
ac_cv_lib_elf_elf_begin=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_elf_elf_begin" >&5
-$as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
-if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
+{ 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
- { $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
+ { 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
@@ -10833,39 +8169,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 kvm_open ();
int
-main ()
+main (void)
{
return kvm_open ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_kvm_kvm_open=yes
-else
+else $as_nop
ac_cv_lib_kvm_kvm_open=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_kvm_kvm_open" >&5
-$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
-if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
+{ 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.
- { $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
+ { 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
@@ -10874,30 +8210,29 @@ 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 getloadavg ();
int
-main ()
+main (void)
{
return getloadavg ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_util_getloadavg=yes
-else
+else $as_nop
ac_cv_lib_util_getloadavg=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_util_getloadavg" >&5
-$as_echo "$ac_cv_lib_util_getloadavg" >&6; }
-if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
+{ 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
@@ -10907,12 +8242,15 @@ fi
# 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
+ 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
@@ -10921,32 +8259,31 @@ 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 getloadavg ();
int
-main ()
+main (void)
{
return getloadavg ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_getloadavg_getloadavg=yes
-else
+else $as_nop
ac_cv_lib_getloadavg_getloadavg=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 :
+{ 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
+else $as_nop
LIBS=$gl_getloadavg_LIBS
fi
@@ -10957,11 +8294,12 @@ fi
HAVE_GETLOADAVG=0
# 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
-else
+ { 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
@@ -10970,33 +8308,30 @@ 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 kstat_open ();
int
-main ()
+main (void)
{
return kstat_open ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_kstat_kstat_open=yes
-else
+else $as_nop
ac_cv_lib_kstat_kstat_open=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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
+printf "%s\n" "$ac_cv_lib_kstat_kstat_open" >&6; }
+if test "x$ac_cv_lib_kstat_kstat_open" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBKSTAT 1" >>confdefs.h
LIBS="-lkstat $LIBS"
@@ -11006,11 +8341,12 @@ fi
# 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
+ { 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
@@ -11019,33 +8355,30 @@ 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 perfstat_cpu_total ();
int
-main ()
+main (void)
{
return perfstat_cpu_total ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_perfstat_perfstat_cpu_total=yes
-else
+else $as_nop
ac_cv_lib_perfstat_perfstat_cpu_total=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_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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5
+printf "%s\n" "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; }
+if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPERFSTAT 1" >>confdefs.h
LIBS="-lperfstat $LIBS"
@@ -11055,17 +8388,19 @@ fi
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 :
+ 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
-$as_echo "#define DGUX 1" >>confdefs.h
+printf "%s\n" "#define DGUX 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
+ { 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
@@ -11074,33 +8409,30 @@ 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 dg_sys_info ();
int
-main ()
+main (void)
{
return dg_sys_info ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dgc_dg_sys_info=yes
-else
+else $as_nop
ac_cv_lib_dgc_dg_sys_info=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_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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
+printf "%s\n" "$ac_cv_lib_dgc_dg_sys_info" >&6; }
+if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDGC 1" >>confdefs.h
LIBS="-ldgc $LIBS"
@@ -11108,7 +8440,6 @@ fi
fi
-
fi
fi
fi
@@ -11124,48 +8455,48 @@ LIBS=$gl_save_LIBS
# Test whether the system declares getloadavg. Solaris has the function
# but declares it in <sys/loadavg.h>, not <stdlib.h>.
-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
+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
-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
+ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H
/* OpenIndiana has a bug: <sys/time.h> must be included before
<sys/loadavg.h>. */
# include <sys/time.h>
# include <sys/loadavg.h>
#endif
#include <stdlib.h>
-"
-if test "x$ac_cv_have_decl_getloadavg" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getloadavg" = xyes
+then :
-else
+else $as_nop
HAVE_DECL_GETLOADAVG=0
fi
- if test $HAVE_GETLOADAVG = 0; then
-
-
-
-
-
-
-
+ if test $HAVE_GETLOADAVG = 0; then
+ GL_COND_OBJ_GETLOADAVG_TRUE=
+ GL_COND_OBJ_GETLOADAVG_FALSE='#'
+else
+ GL_COND_OBJ_GETLOADAVG_TRUE='#'
+ GL_COND_OBJ_GETLOADAVG_FALSE=
+fi
+:
+ if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then
+ GL_COND_OBJ_GETLOADAVG_TRUE='#'
+ GL_COND_OBJ_GETLOADAVG_FALSE='#'
+ fi
- gl_LIBOBJS="$gl_LIBOBJS getloadavg.$ac_objext"
+ if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then :
# Figure out what our getloadavg.c needs.
@@ -11174,17 +8505,17 @@ fi
# 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
-_ACEOF
+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
+done
fi
# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
@@ -11194,64 +8525,57 @@ 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
+printf "%s\n" "#define SVR4 1" >>confdefs.h
fi
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 :
+ 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
-$as_echo "#define UMAX 1" >>confdefs.h
+printf "%s\n" "#define UMAX 1" >>confdefs.h
-$as_echo "#define UMAX4_3 1" >>confdefs.h
+printf "%s\n" "#define UMAX4_3 1" >>confdefs.h
fi
-
fi
if test $gl_func_getloadavg_done = no; then
- ac_fn_c_check_header_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
+ ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_cpustats_h" = xyes
+then :
+ gl_func_getloadavg_done=yes; printf "%s\n" "#define UMAX 1" >>confdefs.h
fi
-
fi
if test $gl_func_getloadavg_done = no; then
- 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
+ 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
-done
-
fi
-for ac_header in nlist.h
+ 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_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 <nlist.h>
"
-if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
+if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h
fi
@@ -11260,7 +8584,7 @@ fi
/* end confdefs.h. */
#include <nlist.h>
int
-main ()
+main (void)
{
struct nlist x;
#ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME
@@ -11272,124 +8596,36 @@ struct nlist x;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define N_NAME_POINTER 1" >>confdefs.h
+printf "%s\n" "#define N_NAME_POINTER 1" >>confdefs.h
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
done
- fi
-
-
-
-
-
- GNULIB_GETLOADAVG=1
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h
-
-
-
-
-
-
- ac_found=0
- ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
-"
-if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
fi
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
- ac_found=1
-fi
- ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
-"
-if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-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
- ac_fn_c_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include <stdlib.h>
-"
-if test "x$ac_cv_have_decl___argv" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL___ARGV $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
- ac_found=1
-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
-/* end confdefs.h. */
-extern char *__progname;
-int
-main ()
-{
-return *__progname;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gl_cv_var___progname=yes
+ GL_GNULIB_GETLOADAVG=1
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext 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
+printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h
@@ -11397,11 +8633,12 @@ $as_echo "#define HAVE_VAR___PROGNAME 1" >>confdefs.h
# 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
+ { 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. */
@@ -11416,16 +8653,17 @@ else
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "gnu glob" >/dev/null 2>&1; then :
+ $EGREP "gnu glob" >/dev/null 2>&1
+then :
make_cv_sys_gnu_glob=yes
-else
+else $as_nop
make_cv_sys_gnu_glob=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5
-$as_echo "$make_cv_sys_gnu_glob" >&6; }
+{ 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=
@@ -11438,110 +8676,47 @@ 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 test $gl_cv_func_malloc_posix = yes; then
-
-$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h
-
- else
- REPLACE_MALLOC=1
- fi
-
- if test $REPLACE_MALLOC = 1; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
-
- fi
-
-
-
-
-
- GNULIB_MALLOC_POSIX=1
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h
-
-
-
-
- if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext"
-
- fi
-
- if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext"
-
- fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define GNULIB_MSVC_NOTHROW 1
-_ACEOF
-
-
-
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
+neither MSDOS nor Windows nor OS2
+#endif
- { $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 <sys/types.h>
int
-main ()
+main (void)
{
-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
-else
- gt_cv_ssize_t=no
+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.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5
+printf "%s\n" "$ac_cv_dos_paths" >&6; }
-$as_echo "#define ssize_t int" >>confdefs.h
+ if test x"$ac_cv_dos_paths" = xyes
+then :
- fi
+printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h
+
+fi
@@ -11551,28 +8726,19 @@ $as_echo "#define ssize_t int" >>confdefs.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
- 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
@@ -11583,677 +8749,29 @@ fi
- STDDEF_H=
-
- { $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
-/* end confdefs.h. */
-#include <stddef.h>
- 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 ()
-{
-
- ;
- 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
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-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
-
- { $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 <stddef.h>
- int test[2 * (sizeof NULL == sizeof (void *)) -1];
-
-int
-main ()
-{
-
- ;
- 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
- 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
-
-
-
-
-
-
-
-
- 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 <stddef.h>" >&5
-$as_echo_n "checking absolute name of <stddef.h>... " >&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 <stddef.h>
-_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
-
-
-
-
- $as_echo "#define __USE_MINGW_ANSI_STDIO 1" >>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 <stdio.h>" >&5
-$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
-if ${gl_cv_next_stdio_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-_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 '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
- }'
-
- gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n "$gl_absolute_header_sed"`
-
- gl_header=$gl_cv_absolute_stdio_h
- gl_cv_next_stdio_h='"'$gl_header'"'
-
-
-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
-
- 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
-
-
-
-
-
- { $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
-/* end confdefs.h. */
-
- #define __STDC_FORMAT_MACROS 1
- #include <stdio.h>
- #include <inttypes.h>
- /* 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
-
-int
-main ()
-{
-
- ;
- 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
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-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 <stdlib.h>" >&5
-$as_echo_n "checking absolute name of <stdlib.h>... " >&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 <stdlib.h>
-_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 '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"`
-
- gl_header=$gl_cv_absolute_stdlib_h
- gl_cv_next_stdlib_h='"'$gl_header'"'
-
-
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-fi
-done
-
- if test $ac_cv_func_stpcpy = no; then
- HAVE_STPCPY=0
- fi
-
- if test $HAVE_STPCPY = 0; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS stpcpy.$ac_objext"
-
-
- :
-
- fi
-
-
-
-
-
- GNULIB_STPCPY=1
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_STPCPY 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
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-int
-main ()
-{
-if (!*strerror (-2)) return 1;
- ;
- 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
-
-
-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
-
-
-
-
-
-$as_echo "#define GNULIB_TEST_STRERROR 1" >>confdefs.h
-
-
-
-
-
- if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
-
-
-
-
-
-
-
-
- gl_LIBOBJS="$gl_LIBOBJS strerror-override.$ac_objext"
-
-
-
-
-
- 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
-
-
- 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 <unistd.h>" >&5
-$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
-if ${gl_cv_next_unistd_h+:} false; then :
- $as_echo_n "(cached) " >&6
+ if $GL_GENERATE_STDBOOL_H; then
+ GL_GENERATE_STDBOOL_H_TRUE=
+ GL_GENERATE_STDBOOL_H_FALSE='#'
else
-
- if test $ac_cv_header_unistd_h = yes; then
-
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <unistd.h>
-_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 '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
-
-
+ 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 <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
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 <ac_nonexistent.h>
_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 <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
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 <ac_nonexistent.h>
_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 <sys/param.h>
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 <sys/param.h>
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 <limits.h> 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 <limits.h>
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 <limits.h>
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 </dev/null` in
*GNU* | *'with BFD'*)
@@ -13397,18 +9901,20 @@ case `$LD -v 2>&1 </dev/null` in
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&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 <CoreFoundation/CFPreferences.h>
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 <CoreFoundation/CFLocale.h>
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 <iconv.h>
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 <iconv.h>
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=
@@ -15023,10 +11549,10 @@ $as_echo "$LIBINTL" >&6; }
fi
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h
-$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
fi
@@ -15043,216 +11569,72 @@ $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
-# 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
+# Checks for libraries.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+printf %s "checking for library containing strerror... " >&6; }
+if test ${ac_cv_search_strerror+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- 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 <sys/types.h>
- /* 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 <sys/types.h>
- /* 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];
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char strerror ();
int
-main ()
+main (void)
{
-
+return strerror ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=64; break
+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_ext
- ac_cv_sys_file_offset_bits=unknown
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext
+ if test ${ac_cv_search_strerror+y}
+then :
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 <sys/types.h>
- /* 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=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 <sys/types.h>
- /* 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 ()
-{
+done
+if test ${ac_cv_search_strerror+y}
+then :
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=1; break
+else $as_nop
+ ac_cv_search_strerror=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
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*
- fi
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+printf "%s\n" "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no
+then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-
-# 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 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. */
@@ -15260,179 +11642,69 @@ 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 ();
int
-main ()
+main (void)
{
return getpwnam ();
;
return 0;
}
_ACEOF
-for ac_lib in '' sun; do
+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 :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_getpwnam=$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_getpwnam+y}
+then :
break
fi
done
-if ${ac_cv_search_getpwnam+:} false; then :
+if test ${ac_cv_search_getpwnam+y}
+then :
-else
+else $as_nop
ac_cv_search_getpwnam=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; }
+{ 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 :
+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
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- 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 <string.h>
-
-_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 <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; 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
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#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
-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_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 <sys/types.h>
#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 <sys/types.h>
@@ -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 <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-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
+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
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
fi
-{ $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" "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
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "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
-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" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default"
+if test "x$ac_cv_header_memory_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
-done
+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 :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_const=yes
-else
+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_c_const" >&5
-$as_echo "$ac_cv_c_const" >&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
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
+printf "%s\n" "#define const /**/" >>confdefs.h
-{ $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 <sys/types.h>
-#include <signal.h>
-
-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
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-{ $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 <sys/types.h>
_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 <limits.h>
+ #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 <signal.h>
+"
+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 <sys/stat.h>
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 <inttypes.h>
#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.
+ if test "$ac_cv_search_clock_gettime" != no
+then :
- { $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 !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 <sys/time.h>
@@ -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 <signal.h>
-"
-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
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BSD_SIGNAL $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h
-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 <signal.h>
#include <sys/wait.h>
#ifdef HAVE_VFORK_H
# include <vfork.h>
#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 <vfork.h>, 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 <libguile.h>
+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 <signal.h>
/* NetBSD declares sys_siglist in unistd.h. */
#if HAVE_UNISTD_H
# include <unistd.h>
#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 <signal.h>
/* NetBSD declares sys_siglist in unistd.h. */
#if HAVE_UNISTD_H
# include <unistd.h>
#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 <signal.h>
/* NetBSD declares sys_siglist in unistd.h. */
#if HAVE_UNISTD_H
# include <unistd.h>
#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 <sys/types.h>
+ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include <sys/types.h>
"
-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 <sys/types.h>
#include <sys/wait.h>
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 <signal.h>
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 <dlfcn.h>
-"
-if test "x$ac_cv_have_decl_dlopen" = xyes; then :
+ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include <dlfcn.h>
+" "$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 <dlfcn.h>
-"
-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 <dlfcn.h>
+" "$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 <dlfcn.h>
-"
-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 <dlfcn.h>
+" "$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 <errno.h>
#include <spawn.h>
- #include <string.h>
-
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</dev/null; fi
+if (exec 3>&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 <bug-make@gnu.org>.
-GNU make home page: <http://www.gnu.org/software/make/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
+GNU Make home page: <https://www.gnu.org/software/make/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>."
_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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
-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 <libguile.h>
+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 <dlfcn.h>]])
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 <errno.h>
#include <spawn.h>
- #include <string.h>
-
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <seed>
+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 $(<D)
+ gobble $(<F) > ../$@
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 <stdlib.h>
- #include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@@ -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
- <https://www.gnu.org/copyleft/>.
+ <https://www.gnu.org/licenses/>.
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
-*******************************************
-
-
-* 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)
-* $(<D): Automatic Variables. (line 137)
-* $(<F): Automatic Variables. (line 138)
-* $(?D): Automatic Variables. (line 153)
-* $(?F): Automatic Variables. (line 154)
-* $(@D): Automatic Variables. (line 113)
-* $(@F): Automatic Variables. (line 119)
-* $(^D): Automatic Variables. (line 142)
-* $(^F): Automatic Variables. (line 143)
-* $*: Automatic Variables. (line 74)
-* $*, and static pattern: Static Usage. (line 82)
-* $+: Automatic Variables. (line 64)
-* $<: Automatic Variables. (line 43)
-* $?: Automatic Variables. (line 48)
-* $@: Automatic Variables. (line 30)
-* $^: Automatic Variables. (line 54)
-* $|: Automatic Variables. (line 70)
-* % (automatic variable): Automatic Variables. (line 37)
-* %D (automatic variable): Automatic Variables. (line 129)
-* %F (automatic variable): Automatic Variables. (line 130)
-* * (automatic variable): Automatic Variables. (line 74)
-* * (automatic variable), unsupported bizarre usage: Missing. (line 44)
-* *D (automatic variable): Automatic Variables. (line 124)
-* *F (automatic variable): Automatic Variables. (line 125)
-* + (automatic variable): Automatic Variables. (line 64)
-* +D (automatic variable): Automatic Variables. (line 147)
-* +F (automatic variable): Automatic Variables. (line 148)
-* -load: load Directive. (line 65)
-* .DEFAULT: Special Targets. (line 22)
-* .DEFAULT <1>: 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)
-* <D (automatic variable): Automatic Variables. (line 137)
-* <F (automatic variable): Automatic Variables. (line 138)
-* ? (automatic variable): Automatic Variables. (line 48)
-* ?D (automatic variable): Automatic Variables. (line 153)
-* ?F (automatic variable): Automatic Variables. (line 154)
-* @ (automatic variable): Automatic Variables. (line 30)
-* @D (automatic variable): Automatic Variables. (line 113)
-* @F (automatic variable): Automatic Variables. (line 119)
-* ^ (automatic variable): Automatic Variables. (line 54)
-* ^D (automatic variable): Automatic Variables. (line 142)
-* ^F (automatic variable): Automatic Variables. (line 143)
-* | (automatic variable): Automatic Variables. (line 70)
-* abspath: File Name Functions. (line 120)
-* addprefix: File Name Functions. (line 78)
-* addsuffix: File Name Functions. (line 67)
-* and: Conditional Functions.
- (line 45)
-* AR: Implicit Variables. (line 40)
-* ARFLAGS: Implicit Variables. (line 113)
-* AS: Implicit Variables. (line 43)
-* ASFLAGS: Implicit Variables. (line 116)
-* basename: File Name Functions. (line 56)
-* bindir: Directory Variables. (line 57)
-* call: Call Function. (line 6)
-* CC: Implicit Variables. (line 46)
-* CFLAGS: Implicit Variables. (line 120)
-* CO: Implicit Variables. (line 66)
-* COFLAGS: Implicit Variables. (line 126)
-* COMSPEC: Choosing the Shell. (line 41)
-* CPP: Implicit Variables. (line 52)
-* CPPFLAGS: Implicit Variables. (line 129)
-* CTANGLE: Implicit Variables. (line 103)
-* CURDIR: Recursion. (line 28)
-* CWEAVE: Implicit Variables. (line 97)
-* CXX: Implicit Variables. (line 49)
-* CXXFLAGS: Implicit Variables. (line 123)
-* define: Multi-Line. (line 6)
-* DESTDIR: DESTDIR. (line 6)
-* dir: File Name Functions. (line 16)
-* else: Conditional Syntax. (line 6)
-* endef: Multi-Line. (line 6)
-* endif: Conditional Syntax. (line 6)
-* error: Make Control Functions.
- (line 11)
-* eval: Eval Function. (line 6)
-* exec_prefix: Directory Variables. (line 39)
-* export: Variables/Recursion. (line 40)
-* FC: Implicit Variables. (line 56)
-* FFLAGS: Implicit Variables. (line 133)
-* file: File Function. (line 6)
-* filter: Text Functions. (line 115)
-* filter-out: Text Functions. (line 133)
-* findstring: Text Functions. (line 104)
-* firstword: Text Functions. (line 185)
-* flavor: Flavor Function. (line 6)
-* foreach: Foreach Function. (line 6)
-* GET: Implicit Variables. (line 69)
-* GFLAGS: Implicit Variables. (line 136)
-* gmk-eval: Guile Interface. (line 18)
-* gmk-expand: Guile Interface. (line 12)
-* gmk_add_function: Loaded Object API. (line 53)
-* gmk_alloc: Loaded Object API. (line 149)
-* gmk_eval: Loaded Object API. (line 123)
-* gmk_expand: Loaded Object API. (line 117)
-* gmk_free: Loaded Object API. (line 154)
-* gmk_func_ptr: Loaded Object API. (line 95)
-* GNUmakefile: Makefile Names. (line 7)
-* GPATH: Search Algorithm. (line 48)
-* guile: Guile Function. (line 6)
-* if: Conditional Functions.
- (line 6)
-* if <1>: 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 0000000..d10e16b
--- /dev/null
+++ b/doc/make.info-3
Binary files differ
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 $(<D)
+ gobble $(<F) > ../$@@
@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 <stdlib.h>
-#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@@ -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 <errno.h> 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 <fcntl.h> 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 <limits.h> 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 <stddef.h> 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 <stdint.h> 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 <stdio.h> 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 <stdlib.h> 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 <string.h> 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 <sys/types.h> 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
-# <unistd.h> 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 <alloca.h> 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 <errno.h> 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 <fcntl.h> 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 <limits.h> 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 <stdbool.h> 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 <stddef.h> 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 <stdint.h> 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 <stdio.h> 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 <stdlib.h> 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 <string.h> 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 <sys/types.h> 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
-# <unistd.h> 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 <https://www.gnu.org/licenses/>. */
-
-#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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <unistd.h>
-
-#include <fcntl.h>
-#include <io.h>
-
-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 <string.h>
#include <stdlib.h>
-#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 <stdio.h>
-# 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
- <https://www.gnu.org/licenses/>.
- */
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <alloca.h> that causes trouble when
- included after 'alloca' gets defined as a macro. As a workaround, include
- this <alloca.h> first and define 'alloca' as a macro afterwards. */
-# if (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@
-# include_next <alloca.h>
-# endif
+ /* Some version of mingw have an <alloca.h> that causes trouble when
+ included after 'alloca' gets defined as a macro. As a workaround,
+ include this <alloca.h> first and define 'alloca' as a macro afterwards
+ if needed. */
+# if defined __GNUC__ && (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@
+# include_next <alloca.h>
+# 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 <https://www.gnu.org/licenses/>. */
-
-/* _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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include "dirname.h"
-
-#include <string.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#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<type>(::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<type>(::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<type>((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 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
- 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 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
- 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <unistd.h>
-
-#include <errno.h>
-
-#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 <https://www.gnu.org/licenses/>. */
/* Written by Bruno Haible <haible@clisp.cons.org>. */
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 <https://www.gnu.org/licenses/>. */
#ifndef _CONCAT_FILENAME_H
#define _CONCAT_FILENAME_H
+#include <stdlib.h>
+
#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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include "dirname.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#ifndef DIRNAME_H_
-# define DIRNAME_H_ 1
-
-# include <stdbool.h>
-# include <stddef.h>
-# 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 <https://www.gnu.org/licenses/>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-/* written by Paul Eggert */
-
-#include <config.h>
-
-/* Specification. */
-#include <unistd.h>
-
-#include <errno.h>
-#include <fcntl.h>
-
-#if HAVE_DUP2
-
-# undef dup2
-
-# if defined _WIN32 && ! defined __CYGWIN__
-
-/* Get declarations of the native Windows API functions. */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-
-# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
-# include "msvc-inval.h"
-# endif
-
-/* Get _get_osfhandle. */
-# if GNULIB_MSVC_NOTHROW
-# include "msvc-nothrow.h"
-# else
-# include <io.h>
-# 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 <InnoTekLIBC/backend.h>
-
-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 <errno.h>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#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 <winsock2.h>. */
-# 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 <https://www.gnu.org/licenses/>. */
-
-/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
-
-#if !_LIBC
-# include <config.h>
-#endif
-
-#include "error.h"
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if !_LIBC && ENABLE_NLS
-# include "gettext.h"
-# define _(msgid) gettext (msgid)
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-# include <stdbool.h>
-# include <stdint.h>
-# include <wchar.h>
-# 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 <errno.h>
-# include <limits.h>
-# include <libio/libioP.h>
-
-/* 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 <libio/iolibio.h>
-# define fflush(s) _IO_fflush (s)
-# undef putc
-# define putc(c, fp) _IO_putc (c, fp)
-
-# include <bits/libc-lock.h>
-
-#else /* not _LIBC */
-
-# include <fcntl.h>
-# include <unistd.h>
-
-# if defined _WIN32 && ! defined __CYGWIN__
-/* Get declarations of the native Windows API functions. */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-/* Get _get_osfhandle. */
-# if GNULIB_MSVC_NOTHROW
-# include "msvc-nothrow.h"
-# else
-# include <io.h>
-# 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 <https://www.gnu.org/licenses/>. */
-
-#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 <stdio.h> 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include "exitfail.h"
-
-#include <stdlib.h>
-
-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 <https://www.gnu.org/licenses/>. */
-
-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 <https://www.gnu.org/licenses/>. */
-
-/* Written by Eric Blake <ebb9@byu.net>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <fcntl.h>
-
-#include <errno.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#ifdef __KLIBC__
-# define INCL_DOS
-# include <os2.h>
-#endif
-
-#if defined _WIN32 && ! defined __CYGWIN__
-/* Get declarations of the native Windows API functions. */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-
-/* Get _get_osfhandle. */
-# if GNULIB_MSVC_NOTHROW
-# include "msvc-nothrow.h"
-# else
-# include <io.h>
-# 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 <fcntl.h>, 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 <https://www.gnu.org/licenses/>. */
-
-/* written by Paul Eggert */
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-#if defined __need_system_fcntl_h
-/* Special invocation convention. */
-
-/* Needed before <sys/stat.h>.
- May also define off_t to a 64-bit type on native Windows. */
-#include <sys/types.h>
-/* On some systems other than glibc, <sys/stat.h> is a prerequisite of
- <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
- But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
- extern "C" { ... } block, which leads to errors in C++ mode with the
- overridden <sys/stat.h> 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 <sys/stat.h>
-#endif
-#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
-
-/* Native Windows platforms declare open(), creat() in <io.h>. */
-#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
- && (defined _WIN32 && ! defined __CYGWIN__)
-# include <io.h>
-#endif
-
-#else
-/* Normal invocation convention. */
-
-#ifndef _@GUARD_PREFIX@_FCNTL_H
-
-/* Needed before <sys/stat.h>.
- May also define off_t to a 64-bit type on native Windows. */
-#include <sys/types.h>
-/* On some systems other than glibc, <sys/stat.h> is a prerequisite of
- <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
- But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
- extern "C" { ... } block, which leads to errors in C++ mode with the
- overridden <sys/stat.h> 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 <sys/stat.h>
-#endif
-/* The include_next requires a split double-inclusion guard. */
-#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
-
-/* Native Windows platforms declare open(), creat() in <io.h>. */
-#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
- && (defined _WIN32 && ! defined __CYGWIN__)
-# include <io.h>
-#endif
-
-#ifndef _@GUARD_PREFIX@_FCNTL_H
-#define _@GUARD_PREFIX@_FCNTL_H
-
-#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */
-# include <unistd.h>
-#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 <limits.h>
-# 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 <bruno@clisp.org>, 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "fd-hook.h"
-
-#include <stdlib.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-
-#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 <https://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* From Paul Eggert and Jim Meyering. */
#ifndef _FILENAME_H
#define _FILENAME_H
+#include <string.h>
+
#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 <haible@clisp.cons.org>, 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 <https://www.gnu.org/licenses/>. */
@@ -26,10 +26,10 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <sys/stat.h>
#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 <https://stackoverflow.com/questions/7839150/>.
- 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 <haible@clisp.cons.org>, 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 <https://www.gnu.org/licenses/>. */
#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 <bruno@clisp.org>, 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <unistd.h>
-
-#if defined _WIN32 && ! defined __CYGWIN__
-
-# include <stdio.h>
-
-# 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 <limits.h>
-# include <sys/resource.h>
-
-# 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "getprogname.h"
-
-#include <errno.h> /* get program_invocation_name declaration */
-#include <stdlib.h> /* get __argv declaration */
-
-#ifdef _AIX
-# include <unistd.h>
-# include <procinfo.h>
-# include <string.h>
-#endif
-
-#ifdef __MVS__
-# ifndef _OPEN_SYS
-# define _OPEN_SYS
-# endif
-# include <string.h>
-# include <sys/ps.h>
-#endif
-
-#ifdef __hpux
-# include <unistd.h>
-# include <sys/param.h>
-# include <sys/pstat.h>
-# include <string.h>
-#endif
-
-#ifdef __sgi
-# include <string.h>
-# include <unistd.h>
-# include <stdio.h>
-# include <fcntl.h>
-# include <sys/procfs.h>
-#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 <https://www.gnu.org/licenses/>. */
-
-#ifndef _GL_GETPROGNAME_H
-#define _GL_GETPROGNAME_H
-
-#include <stdlib.h>
-
-#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 <libintl.h>.
- 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 <https://www.gnu.org/licenses/>. */
-
-#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 <libintl.h>
-
-/* 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 <locale.h> a NOP. We don't include <libintl.h>
- as well because people using "gettext.h" will not include <libintl.h>,
- and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
- is OK. */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
- <libintl.h>, which chokes if dcgettext is defined as a macro. So include
- it now, to make later inclusions of <libintl.h> a NOP. */
-#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
-# include <cstdlib>
-# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
-# include <libintl.h>
-# 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 <string.h>
-
-/* 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 <stdlib.h>
-#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 <https://www.gnu.org/licenses/>. */
-/* 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_<op>_WRAPV, INT_<op>_OK, and
INT_<op>_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
+ <https://bugs.gnu.org/53256>. */
+# 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 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269>. */
+#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 <https://bugs.llvm.org/show_bug.cgi?id=16404>. */
# 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 <limits.h>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#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 <https://www.gnu.org/licenses/>. */
-
-/* written by Jim Meyering and Bruno Haible */
-
-#define _GL_USE_STDLIB_ALLOC 1
-#include <config.h>
-/* 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 <stdlib.h>
-
-#include <errno.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* 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 <stdlib.h>
-
-# 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 <windows.h>
-
-# 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 &not_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 = &not_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 <https://www.gnu.org/licenses/>. */
-
-#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
- {
- <Code that can trigger an invalid parameter notification
- but does not do 'return', 'break', 'continue', nor 'goto'.>
- }
- CATCH_MSVC_INVAL
- {
- <Code that handles an invalid parameter notification
- but does not do 'return', 'break', 'continue', nor 'goto'.>
- }
- 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 <excpt.h>
-
-/* Gnulib can define its own status codes, as described in the page
- "Raising Software Exceptions" on microsoft.com
- <https://docs.microsoft.com/en-us/cpp/cpp/raising-software-exceptions>.
- 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
- <https://docs.microsoft.com/en-us/cpp/cpp/try-except-statement>.
- 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 <setjmp.h>
-
-# 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "msvc-nothrow.h"
-
-/* Get declarations of the native Windows API functions. */
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-#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 <https://www.gnu.org/licenses/>. */
-
-#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 <io.h>
-
-# 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 <haible@clisp.cons.org>, 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 <https://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <stddef.h>, 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 <https://www.gnu.org/licenses/>. */
-
-/* Written by Eric Blake. */
-
-/*
- * POSIX 2008 <stddef.h> for platforms that have issues.
- * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html>
- */
-
-#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 <stddef.h> that blindly
- redefines NULL even when __need_wint_t was defined, even though
- wint_t is not normally provided by <stddef.h>. 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 <cstddef> 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 <cstddef>
-#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 <https://www.gnu.org/licenses/>. */
-
-/*
- * ISO C 99 <stdint.h> for platforms that lack it.
- * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html>
- */
-
-#ifndef _@GUARD_PREFIX@_STDINT_H
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-/* When including a system file that in turn includes <inttypes.h>,
- use the system <inttypes.h>, not our substitute. This avoids
- problems with (for example) VMS, whose <sys/bitypes.h> includes
- <inttypes.h>. */
-#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-
-/* On Android (Bionic libc), <sys/types.h> includes this file before
- having defined 'time_t'. Therefore in this case avoid including
- other system header files; just include the system's <stdint.h>.
- Ideally we should test __BIONIC__ here, but it is only defined after
- <sys/cdefs.h> 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 <stdint.h> 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 <stdint.h> 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 <stdint.h>.
- Include it before <inttypes.h>, since any "#include <stdint.h>"
- in <inttypes.h> 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 <limits.h>
-
-/* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> 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@
-
-/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
- IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
- AIX 5.2 <sys/types.h> isn't needed and causes troubles.
- Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
- relies on the system <stdint.h> definitions, so include
- <sys/types.h> after @NEXT_STDINT_H@. */
-# if @HAVE_SYS_TYPES_H@ && ! defined _AIX
-# include <sys/types.h>
-# endif
-
-# if @HAVE_INTTYPES_H@
- /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
- int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
- <inttypes.h> also defines intptr_t and uintptr_t. */
-# include <inttypes.h>
-# elif @HAVE_SYS_INTTYPES_H@
- /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
- the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
-# include <sys/inttypes.h>
-# endif
-
-# if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
- /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
- int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
- included by <sys/types.h>. */
-# include <sys/bitypes.h>
-# 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 <pthread.h> 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 <stdint.h> 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 <stdint.h> 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 <crtdefs.h> 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 <io.h>. */
-# 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
- <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
- <stdint.h> 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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
-# include <wchar.h>
-# 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 <wchar.h> or <wctype.h> 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 <stdio.h>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#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
- <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
- <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
- 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 <stdarg.h>
-
-#include <stddef.h>
-
-/* 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 <sys/types.h>
-
-/* 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 <unistd.h>, not in <stdio.h>. */
-/* But in any case avoid namespace pollution on glibc systems. */
-#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \
- && ! defined __GLIBC__
-# include <unistd.h>
-#endif
-
-/* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>. */
-/* But in any case avoid namespace pollution on glibc systems. */
-#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
- && ! defined __GLIBC__
-# include <sys/stat.h>
-#endif
-
-/* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>. 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 <stdlib.h>
-#endif
-
-/* MSVC declares 'remove' in <io.h>, not in <stdio.h>. We must include
- it before we #define remove rpl_remove. */
-/* MSVC declares 'rename' in <io.h>, not in <stdio.h>. 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 <io.h>
-#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.,
- <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
- 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
- <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
- 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 <stdlib.h>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#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 <stddef.h>
-
-/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */
-#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
-# include <sys/wait.h>
-#endif
-
-/* Solaris declares getloadavg() in <sys/loadavg.h>. */
-#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
-/* OpenIndiana has a bug: <sys/time.h> must be included before
- <sys/loadavg.h>. */
-# include <sys/time.h>
-# include <sys/loadavg.h>
-#endif
-
-/* Native Windows platforms declare mktemp() in <io.h>. */
-#if 0 && (defined _WIN32 && ! defined __CYGWIN__)
-# include <io.h>
-#endif
-
-#if @GNULIB_RANDOM_R@
-
-/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
- from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
- 'struct random_data'. */
-# if @HAVE_RANDOM_H@
-# include <random.h>
-# endif
-
-# if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@
-# include <stdint.h>
-# endif
-
-# if !@HAVE_STRUCT_RANDOM_DATA@
-/* Define 'struct random_data'.
- But allow multiple gnulib generated <stdlib.h> 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 <unistd.h> declares mkstemp. */
-/* On Mac OS X 10.5, only <unistd.h> declares mkstemps. */
-/* On Mac OS X 10.13, only <unistd.h> declares mkostemp and mkostemps. */
-/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */
-/* But avoid namespace pollution on glibc systems and native Windows. */
-# include <unistd.h>
-#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 <fcntl.h>)
- 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 <fcntl.h>)
- 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <string.h>
-
-#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 <https://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
-
-#include <config.h>
-
-#include "strerror-override.h"
-
-#include <errno.h>
-
-#if GNULIB_defined_EWINSOCK /* native Windows platforms */
-# if HAVE_WINSOCK2_H
-# include <winsock2.h>
-# 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 <errno.h> */
- 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 <errno.h> */
- 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 <https://www.gnu.org/licenses/>. */
-
-#ifndef _GL_STRERROR_OVERRIDE_H
-# define _GL_STRERROR_OVERRIDE_H
-
-# include <errno.h>
-# include <stddef.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <string.h>
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#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 <string.h>.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#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> -> <strings.h> -> "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 <stddef.h>
-
-/* MirBSD defines mbslen as a macro. */
-#if @GNULIB_MBSLEN@ && defined __MirBSD__
-# include <wchar.h>
-#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 <unistd.h>, not in <string.h>. */
-/* But in any case avoid namespace pollution on glibc systems. */
-#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
- && ! defined __GLIBC__
-# include <unistd.h>
-#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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#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 <https://www.gnu.org/licenses/>. */
-
-#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 <stdint.h>. */
-# 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 <stddef.h>, not in <sys/types.h>. */
-/* But avoid namespace pollution on glibc systems. */
-#if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__
-# include <stddef.h>
-#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 <config.h>
-#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 <unistd.h>.
- 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 <https://www.gnu.org/licenses/>. */
-
-#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
- <unistd.h> -> <signal.h> -> <pthread.h> -> <unistd.h>
- 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 <winsock2.h>
-# 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 <stddef.h>
-#endif
-
-/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */
-/* MSVC declares 'unlink' in <stdio.h>, not in <unistd.h>. We must include
- it before we #define unlink rpl_unlink. */
-/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */
-/* 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 <stdio.h>
-#endif
-
-/* Cygwin 1.7.1 and Android 4.3 declare unlinkat in <fcntl.h>, not in
- <unistd.h>. */
-/* But avoid namespace pollution on glibc systems. */
-#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \
- && (defined __CYGWIN__ || defined __ANDROID__) \
- && ! defined __GLIBC__
-# include <fcntl.h>
-#endif
-
-/* mingw fails to declare _exit in <unistd.h>. */
-/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
- <unistd.h>. */
-/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
-/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
- included here. */
-/* But avoid namespace pollution on glibc systems. */
-#if !defined __GLIBC__ && !defined __osf__
-# define __need_system_stdlib_h
-# include <stdlib.h>
-# undef __need_system_stdlib_h
-#endif
-
-/* Native Windows platforms declare chdir, getcwd, rmdir in
- <io.h> and/or <direct.h>, not in <unistd.h>.
- They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
- lseek(), read(), unlink(), write() in <io.h>. */
-#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \
- || defined GNULIB_POSIXCHECK) \
- && (defined _WIN32 && ! defined __CYGWIN__))
-# include <io.h> /* mingw32, mingw64 */
-# include <direct.h> /* 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 <io.h>
-#endif
-
-/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
- NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */
-/* But avoid namespace pollution on glibc systems. */
-#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
- || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
- && !defined __GLIBC__
-# include <netdb.h>
-#endif
-
-/* Android 4.3 declares fchownat in <sys/stat.h>, not in <unistd.h>. */
-/* But avoid namespace pollution on glibc systems. */
-#if (@GNULIB_FCHOWNAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
- && !defined __GLIBC__
-# include <sys/stat.h>
-#endif
-
-/* MSVC defines off_t in <sys/types.h>.
- 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 <sys/types.h>
-#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 <getopt-cdefs.h>
-# include <getopt-pfx-core.h>
-#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 <winsock2.h>. */
-
-#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 <sys/socket.h>");
- _GL_WARN_ON_USE (connect,
- "connect() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (accept,
- "accept() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (bind,
- "bind() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (getpeername,
- "getpeername() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (getsockname,
- "getsockname() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (getsockopt,
- "getsockopt() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (listen,
- "listen() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (recv,
- "recv() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (send,
- "send() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (recvfrom,
- "recvfrom() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (sendto,
- "sendto() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (setsockopt,
- "setsockopt() used without including <sys/socket.h>");
- _GL_WARN_ON_USE (shutdown,
- "shutdown() used without including <sys/socket.h>");
-# 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 <sys/select.h>");
-# 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 <unistd.h> - "
- "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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
-# if @REPLACE_CHOWN@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# undef chown
-# define chown rpl_chown
-# endif
-_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
- _GL_ARG_NONNULL ((1)));
-_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
-# else
-# if !@HAVE_CHOWN@
-_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
- _GL_ARG_NONNULL ((1)));
-# endif
-_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
-# endif
-_GL_CXXALIASWARN (chown);
-#elif defined GNULIB_POSIXCHECK
-# undef chown
-# if HAVE_RAW_DECL_CHOWN
-_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
- "doesn't treat a uid or gid of -1 on some systems - "
- "use gnulib module chown for portability");
-# endif
-#endif
-
-
-#if @GNULIB_CLOSE@
-# if @REPLACE_CLOSE@
-/* Automatically included by modules that need a replacement for close. */
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# undef close
-# define close rpl_close
-# endif
-_GL_FUNCDECL_RPL (close, int, (int fd));
-_GL_CXXALIAS_RPL (close, int, (int fd));
-# else
-_GL_CXXALIAS_SYS (close, int, (int fd));
-# endif
-_GL_CXXALIASWARN (close);
-#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
-# undef close
-# define close close_used_without_requesting_gnulib_module_close
-#elif defined GNULIB_POSIXCHECK
-# undef close
-/* Assume close is always declared. */
-_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
- "use gnulib module close for portability");
-#endif
-
-
-#if @GNULIB_COPY_FILE_RANGE@
-# if !@HAVE_COPY_FILE_RANGE@
-_GL_FUNCDECL_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
- int ofd, off_t *opos,
- size_t len, unsigned flags));
-_GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
- int ofd, off_t *opos,
- size_t len, unsigned flags));
-# endif
-_GL_CXXALIASWARN (copy_file_range);
-#elif defined GNULIB_POSIXCHECK
-/* Assume copy_file_range is always declared. */
-_GL_WARN_ON_USE (copy_file_range,
- "copy_file_range is unportable - "
- "use gnulib module copy_file_range for portability");
-#endif
-
-
-#if @GNULIB_DUP@
-# if @REPLACE_DUP@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define dup rpl_dup
-# endif
-_GL_FUNCDECL_RPL (dup, int, (int oldfd));
-_GL_CXXALIAS_RPL (dup, int, (int oldfd));
-# else
-_GL_CXXALIAS_SYS (dup, int, (int oldfd));
-# endif
-_GL_CXXALIASWARN (dup);
-#elif defined GNULIB_POSIXCHECK
-# undef dup
-# if HAVE_RAW_DECL_DUP
-_GL_WARN_ON_USE (dup, "dup is unportable - "
- "use gnulib module dup for portability");
-# endif
-#endif
-
-
-#if @GNULIB_DUP2@
-/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
- NEWFD = OLDFD, otherwise close NEWFD first if it is open.
- Return newfd if successful, otherwise -1 and errno set.
- See the POSIX:2008 specification
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
-# 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 <fcntl.h>)
- 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
- <https://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */
-# 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 <unistd.h> 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 <TargetConditionals.h>
-# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
-# define _GL_USE_CRT_EXTERNS
-# endif
-# endif
-# ifdef _GL_USE_CRT_EXTERNS
-# include <crt_externs.h>
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
- 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 <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
-
- 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 <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
-
- 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 <unistd.h> 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 <OS.h>
-# 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 <sys/param.h>
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
-# 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 <fcntl.h>)
- 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
- <https://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html>. */
-# 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
- <https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
-# 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 <https://www.gnu.org/licenses/>. */
-
-/* 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 <sys/cdefs.h>, included by <stddef.h> 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 <stddef.h>
-# 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 <int w>
- 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 <https://www.gnu.org/licenses/>. */
/* _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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include "xalloc.h"
-
-#include <stdlib.h>
-
-#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 <https://www.gnu.org/licenses/>. */
-
-#ifndef XALLOC_OVERSIZED_H_
-#define XALLOC_OVERSIZED_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#ifndef XALLOC_H_
-#define XALLOC_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#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 <typename T> inline T *
-xrealloc (T *p, size_t s)
-{
- return (T *) xrealloc ((void *) p, s);
-}
-
-template <typename T> inline T *
-xnrealloc (T *p, size_t n, size_t s)
-{
- return (T *) xnrealloc ((void *) p, n, s);
-}
-
-template <typename T> inline T *
-x2realloc (T *p, size_t *pn)
-{
- return (T *) x2realloc ((void *) p, pn);
-}
-
-template <typename T> inline T *
-x2nrealloc (T *p, size_t *pn, size_t s)
-{
- return (T *) x2nrealloc ((void *) p, pn, s);
-}
-
-template <typename T> 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 <https://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <haible@clisp.cons.org>. */
-
-#include <config.h>
-
-/* 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#define XALLOC_INLINE _GL_EXTERN_INLINE
-
-#include "xalloc.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-/* 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 <dirent.h>, <signal.h>, <poll.h>
- 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 <http://www.gnu.org/licenses/>.
+dnl with this program. If not, see <https://www.gnu.org/licenses/>.
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 <alloca.h>,
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 <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html>.
+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 <psmith@gnu.org>. 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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
- # <bug-gnulib@gnu.org>.
- 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 <errno.h>
- #include <fcntl.h>
- #include <limits.h>
- #include <sys/resource.h>
- #include <unistd.h>
- #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 <errno.h>
-#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 <errno.h>, 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 <errno.h>
-#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 <errno.h>
-#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 <errno.h>
-/* The following two lines are a workaround against an autoconf-2.52 bug. */
-#include <stdio.h>
-#include <stdlib.h>
-])
- 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.h>]],
- [[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 <wchar.h>
+ mbstate_t x;]])],
+ [],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ 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 <wchar.h>
- mbstate_t x;]])],
- [],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[
- #define _XOPEN_SOURCE 500
- #include <wchar.h>
- 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
- <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
-
- 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 <ctype.h>. 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 <https://trac.macports.org/ticket/41033>.
- 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
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
-#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 <fcntl.h> 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 <sys/types.h>
- #include <sys/stat.h>
- #if HAVE_UNISTD_H
- # include <unistd.h>
- #else /* on Windows with MSVC */
- # include <io.h>
- # include <stdlib.h>
- # defined sleep(n) _sleep ((n) * 1000)
- #endif
- #include <fcntl.h>
- #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 <errno.h>
- #include <fcntl.h>
- #include <limits.h>
- #include <sys/resource.h>
- #include <unistd.h>
- #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 <fcntl.h>
-#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.h>
- ]], [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 <unistd.h>]],
- [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 <nlist.h>])
+ [#include <nlist.h>])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]],
[[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 <stdlib.h>
+#if HAVE_SYS_LOADAVG_H
+/* OpenIndiana has a bug: <sys/time.h> must be included before
+ <sys/loadavg.h>. */
+# include <sys/time.h>
+# include <sys/loadavg.h>
+#endif
+#if HAVE_RANDOM_H
+# include <random.h>
+#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 <errno.h>])
- AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [],
- [#include <errno.h>])
- AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include <stdlib.h>])
-
- # 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
+ <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
+ 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 <string.h> or <wchar.h> has already defined this macro, continue
+ to use this earlier definition, since <stdlib.h> 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
-# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00367.html>,
-# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
-# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00441.html>.
-# Remaining problems:
-# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
-# to CC twice
-# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00431.html>.
-# - 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 <stdio.h>.
- 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 <math.h>. By virtue of the second bug, we need to use
- dnl include_next as well in this case.
- cat <<EOF > conftestd1a/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
- cat <<EOF > conftestd1b/conftest.h
-#define DEFINED_IN_CONFTESTD1
-#include <stdio.h>
-#include_next <conftest.h>
-#ifdef DEFINED_IN_CONFTESTD2
-int foo;
-#else
-#error "include_next doesn't work"
-#endif
-EOF
- cat <<EOF > 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 <conftest.h>]],
- [gl_cv_have_include_next=yes],
- [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
- AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
- [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
-# '<foo.h>'; 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 '<foo.h>'; 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 <foo.h>
-# 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 <stddef.h> 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 <stdio.h> 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 <sys/types.h>
+ /* 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 <sys/types.h>
+ 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 <sys/types.h>
+ 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 <limits.h>
- 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 <limits.h>.
-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 <stdlib.h>
- #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 <signal.h>])
+])
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 <sys/types.h>]],
- [[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 <stdbool.h> 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 <stdbool.h>
-
- #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 <stdbool.h>
+
+ /* "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 <stddef.h>, 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 <stddef.h>
- 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 <stddef.h>
- 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 <stdint.h> 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 <wchar.h>, 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 <inttypes.h>.
- 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 <sys/types.h>.
- 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 <stdint.h>.
- 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 <stdint.h>
-/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
-#if !(defined WCHAR_MIN && defined WCHAR_MAX)
-#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
-#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 <limits.h> /* 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 <stdint.h>
-]
-gl_STDINT_INCLUDES
-[
-#include <stdio.h>
-#include <string.h>
-#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 <stdint.h> 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 <stdint.h>
-]
-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 <stdint.h> predates C++11.])
- AC_DEFINE([__STDC_LIMIT_MACROS], [1],
- [Define to 1 if the system <stdint.h> 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 <stdint.h>
- ]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 <sys/inttypes.h>, and for
- dnl <sys/bitypes.h> (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 <limits.h>], [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: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #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 <wchar.h> and <wctype.h> 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 <stdio.h>
- #include <inttypes.h>
- /* 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 <stdio.h> 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 <stdio.h> 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 <stdio.h>
- ]], [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 <stdlib.h>
-#if HAVE_SYS_LOADAVG_H
-/* OpenIndiana has a bug: <sys/time.h> must be included before
- <sys/loadavg.h>. */
-# include <sys/time.h>
-# include <sys/loadavg.h>
-#endif
-#if HAVE_RANDOM_H
-# include <random.h>
-#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 <string.h> 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 <string.h>
- ]],
- [[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 <errno.h>, 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 <string.h>
- #include <errno.h>
- ]],
- [[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 <string.h>.
-
-# 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 <string.h>
- ]],
- [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 <sys/socket.h> is self-contained],
- [gl_cv_header_sys_socket_h_selfcontained],
- [
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
- [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, <sys/socket.h> 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 <sys/socket.h> defines the SHUT_* macros],
- [gl_cv_header_sys_socket_h_shut],
- [
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[#include <sys/socket.h>]],
- [[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 <sys/types.h>
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#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 <sys/types.h>
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_WS2TCPIP_H
- #include <ws2tcpip.h>
- #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 <sys/types.h>
-#include <sys/socket.h>
- ]], [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 <sys/socket.h> 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 <sys/socket.h> replacement and of the
-# <sys/select.h> 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 <sys/socket.h> replacement and of the
-# <arpa/inet.h> 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 <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
-
-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
- <mkdev.h>.])])
-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
- <sysmacros.h>.])])
-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 <unistd.h>
-#endif
-/* Some systems declare various items in the wrong headers. */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <fcntl.h>
-# include <stdio.h>
-# include <stdlib.h>
-# if defined _WIN32 && ! defined __CYGWIN__
-# include <io.h>
-# 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 <stddef.h> 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 <stddef.h>
- 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 <wchar.h> has the 'wint_t' type and whether gnulib's
-dnl <wchar.h> or <wctype.h> 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: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- 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 <wchar.h> or <wctype.h> 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: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-#endif
-#include <wchar.h>
- 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 <time.h>
+ /* 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 <http://www.gnu.org/licenses/>.
+$!this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
# 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
src/ar.c
src/arscan.c
@@ -37,6 +37,7 @@ src/read.c
src/remake.c
src/remote-cstms.c
src/rule.c
+src/shuffle.c
src/signame.c
src/strcache.c
src/variable.c
diff --git a/po/be.gmo b/po/be.gmo
index 0908d0a..2fa713b 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
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 <nab@mail.by>\n"
"Language-Team: Belarusian <i18n@mova.org>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "ПаведамлÑйце пра памылкі на <bug-make@gnu.org>.\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 <bug-make@gnu.org>\n"
-msgstr "ПаведамлÑйце пра памылкі на <bug-make@gnu.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 ea867cc..f1916d1 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
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 <ash@kambanaria.org>, 2019, 2020.
+# Alexander Shopov <ash@kambanaria.org>, 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 <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr ""
+"Съобщавайте за програмни грешки на <bug-make@gnu.org>.\n"
+"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на <dict@fsa-bg.org>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Съобщавайте за програмни грешки на <bug-make@gnu.org>.\n"
-"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на <dict@fsa-bg.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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"
-"<http://gnu.org/licenses/gpl.html>\n"
+"%sЛиценз GPLv3+: Общ публичен лиценз на GNU (GNU GPL) — верÑÐ¸Ñ 3 на лиценза "
+"или по-къÑна верÑиÑ. <http://gnu.org/licenses/gpl.html>\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 a59c572..2b8e87f 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
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 <petr.pisar@atlas.cz>, 2011, 2013, 2014, 2016, 2019, 2020.
+# Petr Pisar <petr.pisar@atlas.cz>, 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 <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\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 "<builtin>"
msgstr "<vestavěný>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Chyby v programu hlaste anglicky na <bug-make@gnu.org>. Nedostatky\n"
+"v pÅ™ekladu hlaste Äesky na <translation-team-cs@lists.sourceforge.net>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Chyby v programu hlaste anglicky na <bug-make@gnu.org>. Nedostatky\n"
-"v pÅ™ekladu hlaste Äesky na <translation-team-cs@lists.sourceforge.net>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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ší <http://gnu.org/licenses/gpl."
+"%sLicence GPLv3+: GNU GPL verze 3 nebo novější <https://gnu.org/licenses/gpl."
"html>\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 41d50a2..85210a9 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 423809e..512179e 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,9 +1,9 @@
# Danish messages for make
-# Copyright (C) 2001, 2016 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2016, 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# Byrial Ole Jensen <byrial@image.dk>, 2001
-# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010, 2016.
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 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 <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\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 "<builtin>"
msgstr "<indbygget>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\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 <bug-make@gnu.org>\n"
-msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <http://gnu.org/licenses/gpl.html>\n"
+"%sLicens GPLv3+: GNU GPL v3 eller nyere <https://gnu.org/licenses/gpl.html>\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 4d9301b..67840b8 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 8359f3b..915dd06 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,11 +1,12 @@
# German message translation file for GNU make
# Copyright © 1996, 1997, 2002, 2013, 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# Philipp Thomas <pth@suse.de> 2013, 2016
-# Karl Eichwalder <ke@suse.de>, 2002, 2005.
-# Alexander Mader <aumader@gmx.net>, 2000.
-# Alexander Mader <mader@wias-berlin.de>, 1997.
# Jochen Hein <jochen.hein@informatik.tu-clausthal.de>, 1996.
+# Alexander Mader <mader@wias-berlin.de>, 1997.
+# Alexander Mader <aumader@gmx.net>, 2000.
+# Karl Eichwalder <ke@suse.de>, 2002, 2005.
+# Philipp Thomas <pth@suse.de> 2013, 2016
+# Roland Illig <roland.illig@gmx.de>, 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 <pth@suse.de>\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 <roland.illig@gmx.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\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 "<builtin>"
msgstr "<eingebaut>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Fehlermeldungen (auf Englisch) bitte an <bug-make@gnu.org> 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 <bug-make@gnu.org>\n"
-msgstr "Fehlermeldungen (auf Englisch) an <bug-make@gnu.org> 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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <http://gnu.org/licenses/gpl."
+"%sLizenz GPLv3+: GNU GPL Version 3 oder später <https://gnu.org/licenses/gpl."
"html>\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 <bug-make@gnu.org>.\n"
-#~ "\n"
-
-#~ msgid "extraneous `endef'"
-#~ msgstr "Überflüssiges „endef“"
-
-#~ msgid "empty `override' directive"
-#~ msgstr "Leere „override“-Anweisung"
-
-#~ msgid "invalid `override' directive"
-#~ msgstr "Ungültige „override“-Anweisung"
-
-#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-#~ msgstr "-Warnung: STRG-Y wird Unterprozesse übriglassen!\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "# %u files in %u hash buckets.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "# %u Dateien zu %u hash-Werten.\n"
+#~ msgid "Child access"
+#~ msgstr "Zugriff durch Kindprozess"
-#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
+#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
#~ msgstr ""
-#~ "# durchschnittlich %.3f Dateien je hash-Wert,\n"
-#~ "max. %u Dateien zu einem hash-Wert.\n"
-
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Syntaxfehler, immer noch in '\"'\n"
-
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Erhielt Signal „SIGCHLD“; %u unbeendete Kindprozesse.\n"
-
-#~ msgid "DIRECTORY"
-#~ msgstr "VERZEICHNIS"
-
-#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "In das VERZEICHNIS wechseln, bevor etwas anderes ausgeführt wird"
-
-#~ msgid "FLAGS"
-#~ msgstr "FLAGS"
-
-#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Prozess aussetzeb, um das Einklinken eines Debuggers zu ermöglichen"
-
-#~ msgid "Environment variables override makefiles"
-#~ msgstr "Umgebungsvariablen überschreiben „make“-Steuerdateien"
-
-#~ msgid "FILE"
-#~ msgstr "DATEI"
-
-#~ msgid "Read FILE as a makefile"
-#~ msgstr "DATEI als „make“-Steuerdatei lesen"
-
-#~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "Das VERZEICHNIS nach eingebundenen „make“-Steuerdateien durchsuchen"
-
-#~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "Nur bei Belastung unterhalb N mehrere Prozesse starten"
-
-#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "Befehle nur anzeigen, nicht ausführen"
-
-#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "DATEI als sehr alt betrachten und sie nicht neu erzeugen"
-
-#~ msgid "Don't echo commands"
-#~ msgstr "Die Kommandos nicht ausgeben"
-
-#~ msgid "Turns off -k"
-#~ msgstr "-k abschalten"
-
-#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Die DATEI stets als neu betrachten"
-
-# !!! Attention: concatenated with the following messages!!!
-#~ msgid "Entering"
-#~ msgstr "Wechsel in das Verzeichnis"
-
-# !!! Attention: concatenated with the following messages!!!
-#~ msgid "Leaving"
-#~ msgstr "Verlassen des Verzeichnisses"
-
-#~ msgid "no file name for `%sinclude'"
-#~ msgstr "Kein Dateiname für „%sinclude“"
-
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "Target „%s“ lässt Voraussetzungs-Muster leer"
-
-#~ msgid "# No variables."
-#~ msgstr "# Keine Variablen vorhanden."
-
-#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# Durchschnittlich %.1f Variablen pro Wert, max %u je Wert.\n"
+#~ "-O[TYP] (--output-sync[=TYP]) ist für diese Bau-Aufgabe nicht "
+#~ "konfiguriert."
-#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# Durchschnittlich %d.%d Variablen pro Wert, max %u je Wert.\n"
+#~ msgid "Jobserver client (fds %d,%d)\n"
+#~ msgstr "Jobserver-Klient (fds %d,%d)\n"
-#~ msgid "the `word' function takes a positive index argument"
-#~ msgstr "Die „word“-Funktion erwartet als Argument einen positiven Index"
+#~ msgid "jobserver pipeline"
+#~ msgstr "Initialisierung der Pipe für den Jobserver"
diff --git a/po/es.gmo b/po/es.gmo
index 9effe87..4727bea 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
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 <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\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 "<builtin>"
msgstr "<integrado>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Informe sobre los errores a <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Informe sobre los errores a <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 1c367cd..c426286 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 5b82045..a0290aa 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,14 +1,14 @@
# Finnish messages for make.
# Copyright (C) 2005 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# Lauri Nurmi <lanurmi@iki.fi>, 2005.
+# Lauri Nurmi <lanurmi@iki.fi>, 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 <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\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 "<builtin>"
msgstr "<sisäänrakennettu>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen <bug-make@gnu.org>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen <bug-make@gnu.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 71682ca..3cb2e38 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
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 <babafou@ensta.fr>, Frédéric Liné <line@MicroNet.fr>, 1996.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996-2006
# Christophe Combelles <ccomb@free.fr>, 2009, 2010
-# Kévin Raymond <shaiton@fedoraproject.org>, 2012-2016, 2018
+# Kévin Raymond <shaiton@fedoraproject.org>, 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 <shaiton@fedoraproject.org>\n"
"Language-Team: French <traduc@traduc.org>\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 "<builtin>"
msgstr "<commande interne>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Signaler les anomalies à <bug-make@gnu.org>.\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 <bug-make@gnu.org>\n"
-msgstr "Signaler les anomalies à <bug-make@gnu.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 c6dbd0f..d0af647 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 473b3c3..c5873c4 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 4.2.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"POT-Creation-Date: 2022-10-31 02:23-0400\n"
"PO-Revision-Date: 2017-01-09 16:02-0500\n"
"Last-Translator: Kevin Patrick Scannell <kscanne@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\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 "<builtin>"
msgstr "<insuite>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 5f703ee..5fa3c55 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
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 <leandro.regueiro@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr ""
+"Envíe informes de fallo no programa a <bug-make@gnu.org>.\n"
+"Envíe informes de fallo na tradución a <proxecto@trasno.net>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Envíe informes de fallo no programa a <bug-make@gnu.org>.\n"
-"Envíe informes de fallo na tradución a <proxecto@trasno.net>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 2ec63ad..fb73f0a 100644
--- a/po/he.gmo
+++ b/po/he.gmo
Binary files differ
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 <eliz@gnu.org>\n"
"Language-Team: Hebrew <eliz@gnu.org>\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 ñåèèñ íò ìùëð lbr$ini_control"
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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr ""
+"\n"
+".<bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\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 <bug-make@gnu.org>\n"
-msgstr ""
-"\n"
-".<bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 2379f8f..a823d81 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
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 <hniksic@xemacs.org>, 2002.
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
-# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2020.
+# Božidar Putanec <bozidarp@yahoo.com>, 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 <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\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 "<builtin>"
msgstr "<ugrađeno>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Greške (bugs) na engleskom javite na <bug-make@gnu.org>\n"
+"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Greške (bugs) na engleskom javite na <bug-make@gnu.org>\n"
-"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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. <http://gnu.org/licenses/gpl.html>\n"
-"%sOvo je slobodan softver: slobodno ga mijenjajte i distribuirajte.\n"
+"%sLicenca GPLv3+: GNU GPL v. 3 ili kasnija <https://gnu.org/licenses/gpl."
+"html>\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 <lokalizacija@linux.hr>\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 c66e931..5098f79 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
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 <arif_endro@yahoo.com>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 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 <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\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 "<builtin>"
msgstr "<bawaan>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Laporkan bugs kepada <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Laporkan bugs kepada <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 7da528b..8e082aa 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 8b98395..1e06f07 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,10 +5,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2.91\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2020-01-19 15:34-0500\n"
-"PO-Revision-Date: 2019-11-13 10:20+0100\n"
+"POT-Creation-Date: 2022-10-31 02:23-0400\n"
+"PO-Revision-Date: 2020-02-04 19:18+0100\n"
"Last-Translator: Francesco Groccia <grocf@protonmail.ch>\n"
"Language-Team: Italian <tp@lists.linux.it>\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 "<builtin>"
msgstr "<incorporato>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Segnalare i bug a <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Segnalare i bug a <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 a9264d8..e90152f 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
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 <yamad@mb.infoweb.ne.jp>, 2001.
# Thanks to NISHIJIMA Takanori
# GOTO Masanori <gotom@debian.or.jp>, 2003-2004.
-# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2011, 2014, 2016, 2019, 2020.
+# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 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 <hmatrjp@users.sourceforge.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯ <bug-make@gnu.org> ã¾ã§.\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 <bug-make@gnu.org>\n"
-msgstr "ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯ <bug-make@gnu.org> ã¾ã§.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 ä»¥é™ <http://gnu.org/licenses/gpl."
+"%sライセンス GPLv3+: GNU GPL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ä»¥é™ <https://gnu.org/licenses/gpl."
"html>\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 258d32a..c2af28d 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
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 <bangjy@nownuri.net>, 1996.
-# Changwoo Ryu <cwryu@debian.org>, 2001, 2006, 2013-2014, 2016, 2019-2020.
+# Changwoo Ryu <cwryu@debian.org>, 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 <cwryu@debian.org>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "문제ì ì„ <bug-make@gnu.org>ë¡œ 알려 주십시오.\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 <bug-make@gnu.org>\n"
-msgstr "문제ì ì„ <bug-make@gnu.org>ë¡œ 알려 주십시오.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 ë˜ëŠ” ì´í›„ <http://gnu.org/licenses/gpl."
+"%së¼ì´ì„ ìŠ¤ GPLv3+: GNU GPL 버전 3 ë˜ëŠ” ì´í›„ <https://gnu.org/licenses/gpl."
"html>\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 baab504..c6ac4e6 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
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 <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "Praneškite apie klaidas adresu <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Praneškite apie klaidas adresu <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "<builtin>"
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 <bug-make@gnu.org>\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 <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 12c2d96..163d4ac 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 9b00278..779ab4b 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,18 +1,18 @@
# Dutch translations for GNU make.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# "On the plus side, Miss Vernon was outstandingly good-looking."
#
# Taco Witte <tcwitte@cs.uu.nl>, 2004.
# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010.
-# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014, 2016, 2019, 2020.
+# Benno Schulenberg <benno@vertaalt.nl>, 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 <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\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 "<builtin>"
msgstr "<ingebouwd>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Rapporteer programmafouten aan <bug-make@gnu.org>;\n"
+"meld gebreken in de vertaling aan <vertaling@vrijschrift.org>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Rapporteer programmafouten aan <bug-make@gnu.org>;\n"
-"meld gebreken in de vertaling aan <vertaling@vrijschrift.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <http://gnu.org/licenses/gpl."
+"%sLicentie GPLv3+: GNU GPL versie 3 of nieuwer <https://gnu.org/licenses/gpl."
"html>\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 da819d0..996bc68 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
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 <kravietz@ceti.pl>, 1996.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2020.
+# Jakub Bogusz <qboosh@pld-linux.org>, 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 <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\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 "<builtin>"
msgstr "<wbudowane>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Błędy proszę zgłaszać na adres <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Błędy proszę zgłaszać na adres <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <http://gnu.org/licenses/gpl."
+"%sLicencja GPLv3+: GNU GPL wersja 3 lub nowsza <https://gnu.org/licenses/gpl."
"html>\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 c0c750e..02a5674 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index ab04c11..f494daf 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"POT-Creation-Date: 2022-10-31 02:23-0400\n"
"PO-Revision-Date: 2020-01-04 07:21+0000\n"
"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\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 "<builtin>"
msgstr "<interno>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Reportar erros em <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Reportar erros em <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 82195da..6eff4e0 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
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 <fabiohfs@netscape.net>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -25,32 +25,32 @@ msgstr ""
# Caso você encontre alguma mensagem que não está bem traduzida, por
# favor me informe dando sua sugestão.
-#: src/ar.c:46
+#: src/ar.c:47
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "característica não suportada: '%s' "
-#: src/ar.c:123
+#: src/ar.c:127
#, c-format
msgid "touch archive member is not available on VMS"
msgstr "o touch não está disponível no 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: O 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: O ar_member_touch retornou um código de erro inválido em '%s'"
@@ -71,68 +71,73 @@ msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
"erro na abertura da biblioteca '%s' para localizar o status 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 de %ld (%ld).\n"
-#: src/arscan.c:945
+#: src/arscan.c:996
msgid " (name might be truncated)"
msgstr " (o 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 "O comando tem muitas linhas (%ud)"
-#: src/commands.c:504
+#: src/commands.c:501
msgid "*** Break.\n"
msgstr "*** Quebra.\n"
-#: src/commands.c:628
+#: src/commands.c:629
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "** [%s] O arquivo membro '%s' pode ser falso. Não foi apagado."
-#: src/commands.c:632
+#: src/commands.c:633
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "** O arquivo membro '%s' pode ser falso. Não foi apagado."
-#: src/commands.c:646
+#: src/commands.c:647
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "** [%s] Apagando arquivo '%s'"
-#: src/commands.c:648
+#: src/commands.c:649
#, c-format
msgid "*** Deleting file '%s'"
msgstr "** Apagando arquivo '%s'"
-#: src/commands.c:684
+#: src/commands.c:685
msgid "# recipe to execute"
msgstr "# comandos a executar"
-#: src/commands.c:687
+#: src/commands.c:688
msgid " (built-in):"
msgstr " (embutido):"
-#: 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"
@@ -140,219 +145,251 @@ msgstr ""
"\n"
"# Diretórios\n"
-#: src/dir.c:1085
+#: src/dir.c:1119
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: não pôde ser estabelecido.\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 %d): não pôde ser aberto.\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]): não pôde ser aberto.\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): não pôde ser aberto.\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 %ull): "
-#: 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 " arquivos, "
-#: 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 diretórios.\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' faz referência a ela mesma (eventualmente)"
-#: src/expand.c:271
+#: src/expand.c:295
#, c-format
msgid "unterminated variable reference"
msgstr "referência a variável não finalizada"
-#: src/file.c:278
+#: src/file.c:272
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Os comandos especificados para o arquivo '%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 ""
"Os comandos para o arquivo '%s' foram encontrados por uma 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' é considerado o mesmo arquivo 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 "Os comandos para '%s' serão ignorados em favor daqueles para '%s'."
-#: src/file.c:310
+#: src/file.c:304
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "não pôde renomear de 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 "não pôde renomer de dois-pontos duplos '%s' para dois-pontos '%s'"
-#: src/file.c:408
+#: src/file.c:407
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "** Apagando arquivo intermediário '%s'"
-#: src/file.c:412
+#: src/file.c:411
#, c-format
msgid "Removing intermediate files...\n"
msgstr "Apagando arquivo intermediário...\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 atual"
-#: src/file.c:876
+#: src/file.c:946
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Data/Hora fora de faixa; substituindo %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 "# Arquivo importante (prerequisito de .PRECIOUS)."
-#: src/file.c:1023
+#: src/file.c:1096
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Alvo Falso (prerequisito de .PHONY)."
-#: src/file.c:1025
+#: src/file.c:1098
msgid "# Command line target."
msgstr "# Linha de Comando do Alvo."
-#: src/file.c:1027
+#: src/file.c:1100
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Um Padrão, arquivo MAKEFILES ou -include/sinclude makefile."
-#: src/file.c:1029
+#: src/file.c:1102
msgid "# Builtin rule"
msgstr "# Regra implícita"
-#: src/file.c:1031
+#: src/file.c:1104
msgid "# Implicit rule search has been done."
msgstr "# Pesquisa por regra implícita concluida."
-#: src/file.c:1032
+#: src/file.c:1105
msgid "# Implicit rule search has not been done."
msgstr "# Pesquisa por regra implícita não concluida."
-#: src/file.c:1034
+#: src/file.c:1107
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Derivação padrão implícita/estática: '%s'\n"
-#: src/file.c:1036
+#: src/file.c:1109
msgid "# File is an intermediate prerequisite."
msgstr "# O arquivo é um pré-requisito intermediário."
-#: src/file.c:1040
+#: src/file.c:1111
+#, fuzzy
+msgid "# File is a prerequisite of .NOTINTERMEDIATE."
+msgstr "# Arquivo importante (prerequisito de .PRECIOUS)."
+
+#: src/file.c:1113
+#, fuzzy
+msgid "# File is secondary (prerequisite of .SECONDARY)."
+msgstr "# Alvo Falso (prerequisito 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 "# O Período da modificação nunca foi verificado."
-#: src/file.c:1048
+#: src/file.c:1125
msgid "# File does not exist."
msgstr "# O Arquivo não existe."
-#: src/file.c:1050
+#: src/file.c:1127
msgid "# File is very old."
msgstr "# O Arquivo está desatualizado."
-#: 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 Arquivo foi atualizado."
-#: src/file.c:1058
+#: src/file.c:1135
msgid "# File has not been updated."
msgstr "# O Arquivo não foi atualizado."
-#: src/file.c:1062
+#: src/file.c:1139
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Comandos em execução (ISTO É UMA FALHA)."
-#: src/file.c:1065
+#: src/file.c:1142
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)."
-#: src/file.c:1074
+#: src/file.c:1151
msgid "# Successfully updated."
msgstr "# Atualizado com sucesso."
-#: src/file.c:1078
+#: src/file.c:1155
msgid "# Needs to be updated (-q is set)."
msgstr "# Precisa ser atualizado (-q está definido)."
-#: src/file.c:1081
+#: src/file.c:1158
msgid "# Failed to be updated."
msgstr "# Problemas com a atualização."
-#: 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"
@@ -360,7 +397,7 @@ msgstr ""
"\n"
"# Arquivos"
-#: src/file.c:1109
+#: src/file.c:1186
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -370,128 +407,151 @@ msgstr ""
"# tabela hash de arquivos:\n"
"# "
-#: src/file.c:1119
+#: src/file.c:1196
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Campo '%s' não memorizado: %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 não numérico para a função 'word'"
-#: 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 para a função 'word' deve 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 não numérico para a função '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 "segundo argumento não numérico para a função '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 "primeiro argumento não numérico para a função 'wordlist' "
+
+#: src/function.c:1329
+#, fuzzy
+msgid "non-numeric second argument to 'intcmp' function"
+msgstr "segundo argumento não numérico para a função 'wordlist' "
+
+#: 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"
" \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"
"\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 "Apagando o arquivo de lote 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 "arquivo: faltando o nome do arquivo"
-#: src/function.c:2234 src/function.c:2265
+#: src/function.c:2347 src/function.c:2383
#, c-format
msgid "open: %s: %s"
msgstr "aberto: %s: %s"
-#: src/function.c:2242
+#: src/function.c:2360
#, c-format
msgid "write: %s: %s"
msgstr "gravação: %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 "fechado: %s: %s"
-#: src/function.c:2258
+#: src/function.c:2376
#, c-format
msgid "file: too many arguments"
msgstr "arquivo: muitos argumentos"
-#: src/function.c:2277
+#: src/function.c:2397
#, c-format
msgid "read: %s: %s"
msgstr "lido: %s: %s"
-#: src/function.c:2290
+#: src/function.c:2409
#, c-format
msgid "file: invalid file operation: %s"
msgstr "arquivo: operação de arquivo 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 "O número de argumentos é insuficiente (%d) para a função '%s' "
-#: src/function.c:2417
+#: src/function.c:2539
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "A função '%s' não foi implementada nesta plataforma "
-#: src/function.c:2483
+#: src/function.c:2608
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "Chamada não terminada para a função '%s': faltando '%c' "
-#: src/function.c:2667
+#: src/function.c:2791
#, c-format
msgid "Empty function name"
msgstr "Nome da função vazio"
-#: src/function.c:2669
+#: src/function.c:2793
#, c-format
msgid "Invalid function name: %s"
msgstr "Nome da função inválido: %s"
-#: src/function.c:2671
+#: src/function.c:2795
#, c-format
msgid "Function name too long: %s"
msgstr "Nome da 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 "O número mínimo de argumentos é inválido (%u) 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 "O número máximo de argumentos é inválido (%u) para a função %s"
@@ -595,151 +655,230 @@ msgstr "Rehash=%u,"
msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Colisões=%lu/%lu=%.0f%%"
-#: src/implicit.c:38
+#: src/implicit.c:41
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr ""
"Procurando por uma regra implícita para '%s'.\n"
" \n"
-#: src/implicit.c:54
+#: src/implicit.c:57
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr ""
"Procurando por uma regra implícita de arquivo-membro para '%s'.\n"
" \n"
-#: src/implicit.c:311
-#, c-format
-msgid "Avoiding implicit rule recursion.\n"
-msgstr "Evitando recursão em regra implícita.\n"
+#: src/implicit.c:61
+#, fuzzy, c-format
+msgid "No archive-member implicit rule found for '%s'.\n"
+msgstr ""
+"Procurando por uma regra implícita de arquivo-membro para '%s'.\n"
+" \n"
-#: src/implicit.c:484
+#: src/implicit.c:326
#, fuzzy, c-format
-msgid "Stem too long: '%s%.*s'.\n"
-msgstr "Desvio muito longo: '%.*s'.\n"
+msgid "Avoiding implicit rule recursion for rule '%s'.\n"
+msgstr "Evitando recursão em regra implícita.\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 ""
"Tentando padrão para regra com '%.*s'.\n"
"\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 "Desvio muito longo: '%.*s'.\n"
+
+#: src/implicit.c:768
+#, fuzzy, c-format
+msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n"
msgstr ""
"Rejeitando pré-requisito para regra '%s'.\n"
"\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 ""
"Rejeitando pré-requisitos implícitos '%s'.\n"
"\n"
-#: src/implicit.c:732
+#: src/implicit.c:787
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr ""
"Tentanto pré-requisito para a regra '%s'.\n"
"\n"
-#: src/implicit.c:733
+#: src/implicit.c:788
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr ""
"Tentando pré-requisito implícito '%s'.\n"
"\n"
-#: src/implicit.c:772
+#: src/implicit.c:827
+#, fuzzy, c-format
+msgid "'%s' ought to exist.\n"
+msgstr ""
+"O arquivo '%s' não existe.\n"
+"\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 atualizado '%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é-requisitos '%s' do alvo '%s' não existem.\n"
+"\n"
+
+#: src/implicit.c:870
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'.\n"
msgstr ""
"Pré-requisito '%s' encontrado como VPATH '%s'\n"
"\n"
-#: src/implicit.c:786
+#: src/implicit.c:885
+#, fuzzy, c-format
+msgid "Looking for a rule with explicit file '%s'.\n"
+msgstr ""
+"Procurando uma regra com o arquivo intermediário '%s'.\n"
+"\n"
+
+#: src/implicit.c:886
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr ""
"Procurando uma regra com o arquivo intermediário '%s'.\n"
"\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 ""
+"Rejeitando pré-requisito para regra '%s'.\n"
+"\n"
+
+#: src/implicit.c:931
+#, fuzzy, c-format
+msgid "Not found '%s'.\n"
+msgstr ""
+"Nenhuma regra implícita encontrada para '%s'.\n"
+"\n"
+
+#: src/implicit.c:1144
+#, fuzzy, c-format
+msgid "Found implicit rule '%s' for '%s'.\n"
+msgstr ""
+"Regra implícita encontrada para '%s'.\n"
+"\n"
+
+#: src/implicit.c:1151
+#, fuzzy, c-format
+msgid "Searching for a compatibility rule for '%s'.\n"
+msgstr ""
+"Procurando por uma regra implícita para '%s'.\n"
+" \n"
+
+#: src/implicit.c:1157
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr ""
+"Nenhuma regra implícita encontrada para '%s'.\n"
+"\n"
+
+#: src/job.c:380
+#, fuzzy
+msgid "Cannot create a temporary file"
msgstr "Não foi possível criar um arquivos temporário\n"
-#: src/job.c:548
+#: src/job.c:552
msgid " (core dumped)"
msgstr " (arquivo core criado)"
-#: 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 "<builtin>"
msgstr "<embutido>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr "Informe os problemas para <bug-make@gnu.org>.\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 <bug-make@gnu.org>\n"
-msgstr "Informe os problemas para <bug-make@gnu.org>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 0000000..b2ede8f
--- /dev/null
+++ b/po/ro.gmo
Binary files differ
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 <remusgabriel.chelu@disroot.org>, 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 <remusgabriel.chelu@disroot.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\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 "<builtin>"
+msgstr "<comandă internă>"
+
+#: 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 <bug-make@gnu.org>\n"
+msgstr "Raportați erorile la <bug-make@gnu.org>\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 <https://gnu.org/licenses/gpl."
+"html>\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ă <https://gnu.org/"
+"licenses/gpl.html>\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 8bfdf7e..ca777b8 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index c2ccf94..73cbac4 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -11,7 +11,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-03 22:09+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "Сообщайте об ошибках по адреÑу <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Сообщайте об ошибках по адреÑу <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 42ba5ef..ed1121d 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 2ec9769..79ce979 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,49 +1,50 @@
# Serbian translation for make.
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright © 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2016.
+# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 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: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "Грешке пријавите на <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Грешке пријавите на <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 c85b068..4c29a09 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
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 <tg@df.lth.se>, 1996-2002.
# Christer Andersson <klamm@comhem.se>, 2007.
-# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2013, 2014, 2016, 2019, 2020.
+# Göran Uddeborg <goeran@uddeborg.se>, 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 <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\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 "<builtin>"
msgstr "<inbyggd>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Anmäl fel till <bug-make@gnu.org>.\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Anmäl fel till <bug-make@gnu.org>.\n"
-"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 <http://gnu.org/licenses/gpl."
-"html>\n"
+"%sLicens GPLv3+: GNU GPL version 3 eller senare <https://gnu.org/licenses/"
+"gpl.html>\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 b795bb1..7e8cf06 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
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 <nilgun@buguner.name.tr>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr ""
+"Yazılım hatalarını <bug-make@gnu.org> adresine,\n"
+"çeviri hatalarını <gnu-tr@belgeler.org> 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 <bug-make@gnu.org>\n"
-msgstr ""
-"Yazılım hatalarını <bug-make@gnu.org> adresine,\n"
-"çeviri hatalarını <gnu-tr@belgeler.org> 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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 3112ee8..f78894e 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
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 <lvm@mystery.lviv.net>, 2001-2012.
-# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2013, 2014, 2016, 2019, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 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 <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "Повідомлюйте про помилки до <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "Повідомлюйте про помилки до <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 або новішій, "
-"<http://gnu.org/licenses/gpl.html>\n"
+"<https://gnu.org/licenses/gpl.html>\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 53aac6b..400637e 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 29fc1f2..6d1eee5 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"POT-Creation-Date: 2022-10-31 02:23-0400\n"
"PO-Revision-Date: 2020-01-04 15:04+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\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 "<builtin>"
msgstr "<dựng-sẵn>"
-#: 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 <bug-make@gnu.org>\n"
+msgstr ""
+"Hãy thông báo lỗi cho <bug-make@gnu.org>\n"
+"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\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 <bug-make@gnu.org>\n"
-msgstr ""
-"Hãy thông báo lỗi cho <bug-make@gnu.org>\n"
-"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 233ca38..36a4856 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
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) <i18n-zh@googlegroups.com>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "报告错误到 <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "报告错误到 <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 bf951d3..783d771 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
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 <arthur200126@gmail.com>, 2015, 2016.
# Y.C Cheng <mail@ycheng.net>, 2017.
# Boyuan Yang <073plan@gmail.com>, 2018, 2019.
-# pan93412 <pan93412@gmail.com>, 2019, 2020.
+# Yi-Jyun Pan <pan93412@gmail.com>, 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 <pan93412@gmail.com>\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 <pan93412@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\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 "<builtin>"
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 <bug-make@gnu.org>\n"
+msgstr "報告錯誤到 <bug-make@gnu.org>\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 <bug-make@gnu.org>\n"
-msgstr "報告錯誤到 <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl."
+"%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
"html>\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 版或更新版本<http://gnu.org/"
+"%sGPLv3+ 授權æ¢æ¬¾ï¼šGNU 通用公共授權æ¢æ¬¾ç¬¬ 3 版或更新版本 <http://gnu.org/"
"licenses/gpl.html>。\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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
@@ -22,6 +22,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "filedef.h"
#include "dep.h"
#include <fnmatch.h>
+#include <intprops.h>
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#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 <http://www.gnu.org/licenses/>. */
/* Define for DGUX with <sys/dg_sys_info.h>. */
/* #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 <stdint.h> and <inttypes.h> do
+ not define. */
+#define intmax_t long
/* Define to 'unsigned long' or 'unsigned long long'
if <inttypes.h> doesn't define. */
@@ -53,12 +58,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define if you have <alloca.h> 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
instead of <sys/cpustats.h>. */
/* #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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
/* 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 <kkaempf@rmi.de> -*-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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
-/* 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 <http://www.gnu.org/licenses/>. */
/* Define for DGUX with <sys/dg_sys_info.h>. */
/* #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 <stdint.h> and <inttypes.h> do
+ not define. */
+#define intmax_t unsigned long
/* Define to 'unsigned long' or 'unsigned long long'
if <inttypes.h> doesn't define. */
@@ -81,15 +83,15 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have <alloca.h> 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
instead of <sys/cpustats.h>. */
/* #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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <memory.h> 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 <ndir.h> 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#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 <sys/dg_sys_info.h>. */
/* #undef DGUX */
@@ -51,15 +49,11 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* 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 <alloca.h>, a header that
+ may be supplied by this distribution. */
#define HAVE_ALLOCA 1
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
+/* Define to 1 if <alloca.h> works. */
/* #undef HAVE_ALLOCA_H */
/* Define to 1 if you have the 'atexit' function. */
@@ -71,10 +65,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <direct.h> 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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* Define to 1 if you have the <locale.h> 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 <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <memory.h> 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 <minix/config.h> 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the 'socket' function. */
/* #undef HAVE_SOCKET */
+/* Define to 1 if you have the <spawn.h> header file. */
+/* #undef HAVE_SPAWN_H */
+
/* Define to 1 if you have the <stdint.h> header file. */
#ifdef __MINGW32__
#define HAVE_STDINT_H 1
#endif
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
/* Define to 1 if you have the <stdlib.h> 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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
/* 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 <sys/file.h> header file. */
+/* #undef HAVE_SYS_FILE_H */
+
+/* Define to 1 if you have the <sys/loadavg.h> header file. */
+/* #undef HAVE_SYS_LOADAVG_H */
+
/* Define to 1 if you have the <sys/ndir.h> 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 <sys/resource.h> header file. */
/* #undef HAVE_SYS_RESOURCE_H */
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
@@ -345,6 +396,21 @@ char *ttyname (int);
/* Define to 1 if you have the <sys/wait.h> 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 <sys/wait.h>. */
/* #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 <vfork.h> 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 <wchar.h> 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<file>' 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 <sys/time.h> and <time.h>. */
-#ifdef __MINGW32__
-#define TIME_WITH_SYS_TIME 1
-#endif
-
/* Define to 1 for Encore UMAX. */
/* #undef UMAX */
@@ -445,9 +504,6 @@ char *ttyname (int);
<sys/cpustats.h>. */
/* #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 <sys/types.h>
/* Define to 'int' if <sys/types.h> doesn't define. */
@@ -507,9 +571,10 @@ char *ttyname (int);
/* Define to 'int' if <sys/types.h> doesn't define. */
#define uid_t int
-/* Define uintmax_t if not defined in <stdint.h> or <inttypes.h>. */
+/* Define {u,}intmax_t if not defined in <stdint.h> or <inttypes.h>. */
#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 <sys/wait.h> 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 <sys/dg_sys_info.h>. */
#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 <alloca.h>, a header that
may be supplied by this distribution. */
#undef HAVE_ALLOCA
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
+/* Define to 1 if <alloca.h> 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 <fcntl.h> 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 <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
@@ -368,25 +274,27 @@
/* Define to 1 if you have the <mach/mach.h> 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 <memory.h> 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 <minix/config.h> 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 <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
@@ -417,9 +325,6 @@
/* Define to 1 if <signal.h> 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 <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> 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 <sys/bitypes.h> header file. */
-#undef HAVE_SYS_BITYPES_H
-
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_DIR_H
@@ -530,9 +429,6 @@
/* Define to 1 if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H
-/* Define to 1 if you have the <sys/inttypes.h> header file. */
-#undef HAVE_SYS_INTTYPES_H
-
/* Define to 1 if you have the <sys/loadavg.h> header file. */
#undef HAVE_SYS_LOADAVG_H
@@ -549,9 +445,6 @@
/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
/* Define to 1 if you have the <sys/stat.h> 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 <wchar.h> 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 <winsock2.h> 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<file>' 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 <sys/stat.h> 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 <sys/time.h> and <time.h>. */
-#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 <stdint.h> predates C++11. */
-#undef __STDC_CONSTANT_MACROS
-
-/* Define to 1 if the system <stdint.h> 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
- <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
-
- 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 <ctype.h>. 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 <https://trac.macports.org/ticket/41033>.
- 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
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
-#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
+ <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
+ 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 <string.h> or <wchar.h> has already defined this macro, continue
+ to use this earlier definition, since <stdlib.h> 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 <sys/types.h> doesn't define. */
#undef gid_t
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> 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 <sys/types.h> 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 <sys/types.h> does not define. */
#undef off_t
-/* Define to `int' if <sys/types.h> 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 <sys/types.h> 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#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 <http://www.gnu.org/licenses/>. */
/* 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 <memory.h> header file. */
#define HAVE_MEMORY_H 1
@@ -66,13 +73,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define SCCS_GET "get"
-/* Define to 'unsigned long' or 'unsigned long long'
- if <inttypes.h> 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 <http://www.gnu.org/licenses/>. */
/* 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 <stdint.h> and <inttypes.h> do
+ not define. */
+#define intmax_t long long
/* Define to `int' if <sys/types.h> does not define. */
+#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 5
#define ssize_t int
+#endif
+
+/* Define to 'unsigned long' or 'unsigned long long'
+ if <inttypes.h> 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include "hash.h"
#include "filedef.h"
#include "dep.h"
+#include "debug.h"
#ifdef HAVE_DIRENT_H
# include <dirent.h>
@@ -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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include <assert.h>
+#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
@@ -25,6 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
#include <config.h>
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 <libintl.h>.
-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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>.
+;; with this program. If not, see <https://www.gnu.org/licenses/>.
(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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include "filedef.h"
@@ -22,9 +22,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "variable.h"
#include "job.h" /* struct child, used inside commands.h */
#include "commands.h" /* set_file_variables */
+#include "shuffle.h"
+#include <assert.h>
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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
@@ -25,11 +25,13 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#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 <strings.h> /* for strcasecmp, strncasecmp */
+# include <strings.h> /* for strcasecmp, strncasecmp */
# endif
# include <windows.h>
@@ -121,6 +123,10 @@ static void vmsWaitForChildren (int *);
# include <process.h>
#endif
+#if defined (HAVE_FCNTL_H)
+# include <fcntl.h>
+#endif
+
#if defined (HAVE_SYS_WAIT_H) || defined (HAVE_UNION_WAIT)
# include <sys/wait.h>
#endif
@@ -198,6 +204,14 @@ int getgid ();
# endif
#endif
+#if HAVE_SYS_LOADAVG_H
+# include <sys/loadavg.h>
+#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 <sven.c.dack@sky.com>: 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "output.h"
@@ -29,7 +29,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include "os.h"
@@ -24,6 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "rule.h"
#include "debug.h"
#include "getopt.h"
+#include "shuffle.h"
#include <assert.h>
#ifdef _AMIGA
@@ -34,7 +35,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
# include <windows.h>
# include <io.h>
#ifdef HAVE_STRINGS_H
-# include <strings.h> /* for strcasecmp */
+# include <strings.h> /* 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;
+
+/* Style for the jobserver. */
+static char *jobserver_style = NULL;
+
+/* Shuffle mode for goals and prerequisites. */
+
+static char *shuffle_mode = NULL;
-/* Handle for the mutex used on Windows to synchronize output of our
- children under -O. */
+/* Handle for the mutex to synchronize output of our children under -O. */
-char *sync_mutex = NULL;
+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
+/* Print a nice usage method and exit. */
-#ifndef NO_OUTPUT_SYNC
-
-/* 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 <bug-make@gnu.org>\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,80 +1911,6 @@ main (int argc, char **argv, char **envp)
#endif
}
- /* 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 && (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)
@@ -1773,77 +1923,47 @@ main (int argc, char **argv, char **envp)
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."));
+ _("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"
+ outfile = get_tmpfile (&newnm);
- if (((tmpdir = getenv ("TMPDIR")) == NULL || *tmpdir == '\0')
-#if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__)
- /* These are also used commonly on these platforms. */
- && ((tmpdir = getenv ("TEMP")) == NULL || *tmpdir == '\0')
- && ((tmpdir = getenv ("TMP")) == NULL || *tmpdir == '\0')
-#endif
- )
- tmpdir = DEFAULT_TMPDIR;
-
- template = alloca (strlen (tmpdir) + CSTRLEN (DEFAULT_TMPFILE) + 2);
- strcpy (template, tmpdir);
-
-#ifdef HAVE_DOS_PATHS
- if (strchr ("/\\", template[strlen (template) - 1]) == NULL)
- strcat (template, "/");
-#else
-# ifndef VMS
- if (template[strlen (template) - 1] != '/')
- strcat (template, "/");
-# endif /* !VMS */
-#endif /* !HAVE_DOS_PATHS */
-
- strcat (template, DEFAULT_TMPFILE);
- outfile = get_tmpfile (&stdin_nm, template);
- if (outfile == 0)
- pfatal_with_name (_("fopen (temporary file)"));
while (!feof (stdin) && ! ferror (stdin))
{
char buf[2048];
size_t n = fread (buf, 1, sizeof (buf), stdin);
if (n > 0 && fwrite (buf, 1, n, outfile) != n)
- pfatal_with_name (_("fwrite (temporary file)"));
+ 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=<tmpfile>
+ 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<name>". */
+
+ /* 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 <name>. */
+ 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 <name> or -xyzf <name>. Replace the name. */
+ *(++nv) = mf;
+ else
+ {
+ /* -f<name> or -xyzf<name>. */
+ 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 <bug-make@gnu.org>\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 <http://gnu.org/licenses/gpl.html>\n\
+ printf (_("%sLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>\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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* We use <config.h> 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 <sys/timeb.h> has been included first. */
# include <sys/timeb.h>
#endif
-#if TIME_WITH_SYS_TIME
+#if HAVE_SYS_TIME_H
# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
#endif
+#include <time.h>
#include <errno.h>
@@ -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 <stdint.h>
#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 <edward.welbourne@qt.io> */
+#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
# include <sys/file.h>
#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 <unistd.h>. */
-
-/* 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 <strtol.c>
+#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 <https://www.gnu.org/licenses/>. */
+
+/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+#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 <http://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
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 <fcntl.h>
-#elif defined(HAVE_SYS_FILE_H)
-# include <sys/file.h>
-#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
@@ -20,10 +20,15 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
+# define FD_OK(_f) (fcntl ((_f), F_GETFD) != -1)
#elif defined(HAVE_SYS_FILE_H)
# include <sys/file.h>
#endif
+#if !defined(FD_OK)
+# define FD_OK(_f) 1
+#endif
+
#if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H)
# include <sys/select.h>
#endif
@@ -32,10 +37,47 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include "filedef.h"
@@ -34,7 +34,15 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <starlet.h>
#endif
#ifdef WINDOWS32
+#include <windows.h>
#include <io.h>
+#include <sys/stat.h>
+#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
+
#include "filedef.h"
-#include "commands.h"
#include "job.h"
+#include "commands.h"
#include "debug.h"
-#include <sys/time.h>
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
#include <netdb.h>
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <https://www.gnu.org/licenses/>. */
+
+#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 <https://www.gnu.org/licenses/>. */
+
+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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include <assert.h>
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* We use <config.h> 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 <http://www.gnu.org/licenses/>. */
# 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
/* 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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include <string.h>
#include <descrip.h>
@@ -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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include <config.h>
@@ -23,7 +23,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <stdlib.h>
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "makeint.h"
#include <string.h>
#include <io.h>
@@ -23,349 +25,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
#include <string.h>
@@ -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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include <config.h>
#include <stddef.h>
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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include "makeint.h"
#include <assert.h>
-#include <config.h>
#include <stdlib.h>
#include <stdio.h>
#include <io.h> /* for _get_osfhandle */
@@ -29,7 +30,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <signal.h>
#include <windows.h>
-#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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include <stdlib.h>
#include <windows.h>
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 <http://www.gnu.org/licenses/>. */
+this program. If not, see <https://www.gnu.org/licenses/>. */
#include "makeint.h"
@@ -22,22 +22,202 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <windows.h>
#include <process.h>
#include <io.h>
+#if _WIN32_WINNT > 0x0601
+#include <synchapi.h>
+#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 <http://www.gnu.org/licenses/>.
-----------------------------------------------------------------------------
-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 <http://www.gnu.org/licenses/>.
+$! this program. If not, see <https://www.gnu.org/licenses/>.
$!
$!
$ 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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
case "$1" in
"") echo 'Usage: mkshadow <destdir>'; 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 <http://www.gnu.org/licenses/>.
+rem with this program. If not, see <https://www.gnu.org/licenses/>.
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 <make prog>]
# (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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
# 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 <<EOF;
-\#Extra space at the end of the following file name
-include $makefile2
-all: ; \@echo There should be no errors for this makefile.
+run_make_test(qq!#Extra space at the end of the following file name
+include incl.mk ! . q!
+all: ; @echo There should be no errors for this makefile.
-include nonexistent.mk
-include nonexistent.mk
@@ -27,27 +22,12 @@ sinclude nonexistent-2.mk
sinclude makeit.mk
error: makeit.mk
-EOF
-
-close(MAKEFILE);
-
-
-open(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=<auth>,$(MAKEFLAGS))
recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all
all:;@echo $@: "/$(SHOW)/"
!,
'', "recurse: /-j2 --jobserver-auth=<auth> $np/\nall: /-j2 --jobserver-auth=<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=<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=<auth> $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth=<auth> $np/\nall: /-j3 --jobserver-auth=<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 <string.h>
-#include <stdio.h>
-
#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 <matz@suse.de> 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 <yamada.masahiro@socionext.com>
@@ -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");
+&gtouchfiles("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 <file.out)y
+x:;@echo '$(X1)'
+!,
+ '', "xy\n");
+
+unlink('file.out');
+
+# Read a file whose full contents is a newline.
+create_file('file.out', "\n");
+run_make_test(q!# <nl>
+X1 := x$(file <file.out)y
+x:;@echo '$(X1)'
+!,
+ '', "xy\n");
+
+unlink('file.out');
+
+# Read a file which does not end with a newline.
+create_file('file.out', "hello");
+# echo prints a trailig newline, because run_make_test appends a newline.
+run_make_test(q!# hello
+X1 := x$(file <file.out)y
+x:;@echo $(X1)
+!,
+ '', "xhelloy\n");
+
+unlink('file.out');
+
+# Read a file which ends with a newline.
+create_file('file.out', "hello\n");
+# echo prints a trailig newline, because run_make_test appends a newline.
+run_make_test(q!# hello<nl>
+X1 := x$(file <file.out)y
+x:;@echo '$(X1)'
+!,
+ '', "xhelloy\n");
+
+
+unlink('file.out');
+
+# Read a file which ends with multiple newlines.
+create_file('file.out', "hello\n\n");
+run_make_test(q!# hello<nl><nl>
+X1 := x$(file <file.out)y
+export X1
+x:;@echo "$$X1"
+!,
+ '', "xhello\ny\n");
+
+unlink('file.out');
+
+# Read a file whose contents exceed 200 bytes.
+# 200 is the initial size of variable_buffer.
+# File bigger than 200 bytes causes a realloc.
+# The size of the file in this test not only exceeds 200 bytes, it exceeds 65k.
+# Use $(info ...) here to avoid command line limitations
+
+my $s = "hello world, hello world, hello world, hello world, hello world";
+my $answer = $s x 2000;
+create_file('file.out', $answer);
+run_make_test(q!# <hugestring>
+X1 := x$(file <file.out)y
+x:;@$(info $(X1))
+!,
+ '', "x${answer}y\n#MAKE#: 'x' is up to date.\n");
+
+unlink('file.out');
+
# Reading from non-existent file
run_make_test(q!
X1 := $(file <file.out)
diff --git a/tests/scripts/functions/filter-out b/tests/scripts/functions/filter-out
index 1fe4819..dec5343 100644
--- a/tests/scripts/functions/filter-out
+++ b/tests/scripts/functions/filter-out
@@ -27,6 +27,22 @@ all: ; @echo '$(files1) $(files2)'
!,
'', "foo.elc foo.elc\n");
+# Force use of hash (see function.c:func_filter_filterout for params)
+
+my $base = 'foo.1 foo.2 foo.3 foo.4 foo.5 foo.6 foo.7 foo.8 foo.9 foo.10';
+
+my $base10 = join(' ', ($base) x 10);
+my $out3 = join(' ', ('foo.3') x 10);
+my $out456 = join(' ', ('foo.4 foo.5 foo.6') x 10);
+
+run_make_test("words := $base10" . q!
+files1 := $(filter %.3, $(words))
+files2 := $(filter %.4 foo.5 foo.6, $(words))
+all: ; @echo '$(files1) $(files2)'
+!,
+ '', "$out3 $out456\n");
+
+
# Escaped patterns
run_make_test(q!all:;@echo '$(filter foo\%bar,foo%bar fooXbar)'!,
'', "foo%bar\n");
diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach
index 9badc52..6a06109 100644
--- a/tests/scripts/functions/foreach
+++ b/tests/scripts/functions/foreach
@@ -14,7 +14,7 @@ types of foreach loops are tested\n";
# TEST 0
# Set an environment variable that we can test in the makefile.
-$extraENV{FOOFOO} = 'foo foo';
+$ENV{FOOFOO} = 'foo foo';
run_make_test("space = ' '".'
null :=
@@ -31,8 +31,6 @@ for2: ; @echo $(fe)',
"undefined file default file environment default file command line override automatic automatic
foo.o bletch.o null.o @.o garf.o .o .o undefined.o file.o default.o file.o environment.o default.o file.o command.o line.o override.o automatic.o automatic.o");
-delete $extraENV{FOOFOO};
-
# TEST 1: Test that foreach variables take precedence over global
# variables in a global scope (like inside an eval). Tests bug #11913
diff --git a/tests/scripts/functions/intcmp b/tests/scripts/functions/intcmp
new file mode 100644
index 0000000..24e25b2
--- /dev/null
+++ b/tests/scripts/functions/intcmp
@@ -0,0 +1,72 @@
+# -*-perl-*-
+$description = "Test the intcmp function.\n";
+
+$details = "Try various uses of intcmp and ensure they all give the correct
+results.\n";
+
+run_make_test('# Negative
+n = -10
+# Zero
+z = 0
+# Positive
+p = 888
+min = -9223372036854775808
+max = 9223372036854775807
+huge = 8857889956778499040639527525992734031025567913257255490371761260681427
+.RECIPEPREFIX = >
+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 <<EOF;
-include $mf2
-all:
-\t\@echo There should be no errors for this makefile.
-EOF
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-
-open(MAKEFILE,"> $makefile2");
-
-print MAKEFILE <<EOF;
+my $included = 'ifile.mk';
+my $ipath = File::Spec->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 <http://www.gnu.org/licenses/>.
+# this program. If not, see <https://www.gnu.org/licenses/>.
# 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 <word> : echo <word> to stdout
+# out <word> : echo <word> to stdout with a newline
+# raw <word> : echo <word> to stdout without adding anything
# file <word> : echo <word> to stdout AND create the file <word>
# dir <word> : echo <word> to stdout AND create the directory <word>
# rm <word> : echo <word> to stdout AND delete the file/directory <word>
@@ -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') {